2012-03-02 49 views
1

我在寫一個像unix tr的程序,它可以替換輸入字符串。 我的策略是首先找到源字符串的所有索引,然後用目標字符串替換它們。我不知道如何通過索引替換字符串,所以我只是使用切片。 但是,如果目標字符串的長度不等於源字符串,則該程序將錯誤。我想知道如何通過索引替換字符串。Python:如何用索引替換字符串

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', ''000', 'aabbccaa') ,輸出將是錯誤的:

ooobbcoooa

回答

3

Python字符串是不可變的(據我所知),所以你不能只進去插入東西。

幸運的是,Python已經有一個replace()函數。

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

謝謝你,我知道這 – remy 2012-03-02 07:37:16

+1

@remy貴的問題得到解答?如果是這樣,您可以使用綠色複選標記接受答案。 – Taymon 2012-03-02 07:39:26

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