2012-03-02 23 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( 'A'、 'M'、 'aabbccaa')
この結果は正しいであろう。mmbbccmm
しかし、もしTR( 'AA'、 'OOO'、 'aabbccaa') 、出力が間違っていることになります。

ooobbcoooa

答えて

3

Pythonの文字列は(私が覚えている限り)不変です。したがって、あなたは入り込んで物を挿入することはできません。

幸いなことに、Pythonにはすでにreplace()という機能があります。

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

私は – remy

+1

@remyは、あなたの質問に回答されていますそれを知っている、あなたに感謝?その場合は、緑のチェックマークを使用して回答を受け入れることができます。 – Taymon

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 
関連する問題