替换python中字符串中的每个字符

时间:2016-02-17 18:00:29

标签: python substitution

我正在编写一个脚本,我正在尝试创建一个字符串列表,在每个后续字符处都有一个输入字符的子字符。

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,则每次迭代的附加lst输出如下所示: XBCDEFGHIJKL,AXCDEFGHIJKL,ABXDEFGHIJKL等

我认为字符串本身是不可变的 - 所以我不能直接编辑它们。我怎么能以python-ic方式解决这个问题?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以将字符串转换为列表,执行替换,然后将其转换回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'

答案 2 :(得分:0)

字符串方法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]

答案 3 :(得分:0)

这是你的意思吗?

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

答案 4 :(得分:0)

我发现翻译表和翻译功能经常派上用场。就像你说的,字符串是不可变的,因此translate函数返回一个完成翻译的副本。

下面的示例允许您输入替换字符串(而不仅仅是单个字符),并且它将使用提供的输入字符替换要翻译的所有字符。

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