2012-04-27 24 views
1

私はリスト内に位置しています。これらは、文字列に何かを挿入する場所を示します。 文字列は、例えば次のとおりです。ポジションの文字列を検索してテキストを挿入する

s = "Hello World and foo bar" 

一覧:

list = ['0', '5', '23'] 
pos = list[0], etc. 

私はこれらを挿入します:

ins_list = ['BIG', 'BAD', 'WOLF'] 

結果:

result = BIGHelloBAD World and foo barWOLF 

私は、ファイルを使用していました、I j ust file.seek(pos)ですが、文字列に書きたい場合はシークを使用します。同等の方法はありますか? /書き込みを求めるとのアプローチは機能しませんので

(多分私が数えている位置が間違っが、ここで問題がないthatsの)おかげで、

答えて

1

Pythonの文字列は不変です。スライスを使用します。

1

位置が(あなたの場合のように)整数でない場合は、整数に変換する必要があります。 Iはpos_listの整数を使用した:

s = "Hello World and foo bar" 
pos_list = [0, 5, 23] 
ins_list = ['BIG', 'BAD', 'WOLF'] 

p1 = 0 
lst = [] 
for p2, text in zip(pos_list, ins_list): 
    lst.append(s[p1:p2]) 
    lst.append(text) 
    p1 = p2 
lst.append(s[p1:]) 
result = ''.join(lst) 

print(result) 

ジッパー()は、2つ以上の配列を受け取り、対応する要素と結合(タプル)を返します。 randcoderが言及しているので、文字列は不変です。文字列を変更すると、実際に新しい文字列を作成します。そのため、通常は、文字列フラグメントをリストに集めることです。最後に、リストが結果ストリングに結合されます。

1

おかげでrandcoder、スライスは魅力のように動作します:

...loop: 

part1 = s[:pos] 
part2 = s[pos:] 
s = part1 + ins_list[n] + part2 
+0

が、ここでの問題は、あなたのケースでは、あなたがこの文字列 ' 'BIGHeBADllo世界とfWOLFoo bar''ない結果になってしまいますということですあなたは示しました。 –

関連する問題