Python:如何用索引替换字符串

时间:2012-03-02 07:13:56

标签: python

我正在编写像unix tr这样的程序,可以替换输入字符串。 我的策略是首先查找源字符串的所有索引,然后用目标字符串替换它们。我不知道如何用索引替换字符串,所以我只使用切片。 但是,如果目标字符串的长度不等于源字符串,则此程序将出错。我想知道用索引替换字符串的方法是什么。

def tr(srcstr,dststr,string):
    indexes = list(find_all(string,srcstr)) #find all src indexes as list
    for index in indexes:
        string = string[:index]+dststr+string[index+len(srcstr):]
    print string

TR( 'AA', '毫米', 'aabbccaa')
结果是正确的:mmbbccmm
但如果tr('aa','ooo','aabbccaa'),输出将是错误的:

ooobbcoooa

3 个答案:

答案 0 :(得分:3)

Python字符串是不可变的(据我所知),所以你不能只是插入并插入东西。

幸运的是,Python已经有replace()函数。

>>> s = "hello, world!"
>>> s1 = s.replace("l", "k")
>>> print s1
hekko, workd!

答案 1 :(得分:0)

您是否了解str.replace方法?我认为它会做你想要的:

http://docs.python.org/library/string.html#string.replace

当你发现你想要支持的不只是简单的字符串替换时,请查看re模块:

http://docs.python.org/library/re.html

答案 2 :(得分:0)

def tr(srctr, deststr, string):
    string = string.split(srctr)
    return ''.join([deststr if i == '' else i for i in string ])

print tr('aa', 'ooo', 'aabbccaa') # ooobbccooo