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

file を使っていた時は file.seek(pos) だけだったのですが、文字列で書きたい時は seek が使えません。同等の方法はありますか?

ありがとうございます (多分私は位置を間違って数えましたが、それはここでは問題ではありません)

4

3 に答える 3

1

Python文字列は不変であるため、seek/writeを使用したアプローチは機能しません。スライスを使用します。

于 2012-04-27T14:23:35.053 に答える
1

randcoder に感謝します。スライスは魅力的に機能します。

...loop:

part1 = s[:pos]
part2 = s[pos:]
s = part1 + ins_list[n] + part2
于 2012-04-28T11:52:24.170 に答える
1

位置が整数でない場合(あなたの場合のように)、整数に変換する必要があります。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)

zip() は 2 つ以上のシーケンスを取り、対応する要素を持つカップル (タプル) を返します。randcoder が述べたように、文字列は不変です。文字列を変更すると、実際には変更された新しい文字列が作成されます。そのため、通常は文字列の断片をリストに集めます。最後に、リストが結果の文字列に結合されます。

于 2012-04-27T20:39:20.807 に答える