簡體   English   中英

在python中替換字符串中的每個字符

[英]Replacing every character in a string in python

我正在編寫一個腳本,試圖在該腳本中創建一個字符串列表,在每個后續字符處都有一個用於輸入字符的子項。

my_replacement = input("Replacement character?: ")
orig_strng = ABCDEFGHIJKL
lst =[]
for i in range(len(orig_strng)):
    a = function to replace orig_strng[i] with my_replacements
    lst.append(a)

如果我的輸入是X,則每次迭代后附加的第一個輸出將類似於:XBCDEFGHIJKL,AXCDEFGHIJKL,ABXDEFGHIJKL等。

我知道字符串本身是不可變的-因此我無法直接對其進行編輯。 我將如何以python-ic的方式解決這個問題?

def replace_each(s,letter):
    for i,original_letter in enumerate(s):
        yield "{0}{1}{2}".format(s[:i],letter,s[i+1:])

print(list(replace_each("ABCDEFGHI","x")))

我認為是相當pythonic

您可以將字符串轉換為列表,執行替換,然后使用join將其轉換回字符串

def foo(my_string, i, replacement):
    my_list = list(my_string)
    my_list[i] = replacement
    return "".join(my_list)

foo(orig_strng, 1, "X")
#'AXCDEFGHIJKL'

字符串方法replace()在這里適用於示例情況,但不一定適用於所有情況。

my_replacement = input("Replacement character?: ")
orig_strng = ABCDEFGHIJKL
lst =[]
for i in range(len(orig_strng)):
    a = orig_strng.replace(orig_string[i], my_replacement)
    lst.append(a)

如果您願意,可以通過列表理解來做到這一點:

a = [orig_string.replace(orig_string[i], my_replacement) for i in orig_string]

你是這個意思嗎?

def foo(string,i,replacement):
    return string[:i]+replacement+string[i+1:]

我發現翻譯表和翻譯功能通常派上用場。 就像您說的那樣,字符串是不可變的,因此translation函數返回翻譯完成的副本。

下面的示例使您可以輸入替換字符串(不僅是單個字符),而且還將所有出現的要翻譯的字符替換為提供的輸入字符。

from string import maketrans

original = 'ABCDEFGHIJK'
n = len(original)
user_in = "XYZ" #can also just be a single character X
m = min(len(user_in), n)
for i in range(n):
    trans_table = maketrans((original[i:] + original[:i])[:m], user_in[:m])
    new = original.translate(trans_table)
    print new

產量

XYZDEFGHIJK
AXYZEFGHIJK
ABXYZFGHIJK
ABCXYZGHIJK
ABCDXYZHIJK
ABCDEXYZIJK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM