2012-04-27 60 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 

當我使用的文件,我j ust file.seek(pos),但是當我想把它寫入字符串時,我無法使用seek。有沒有等效的方法?

感謝, (也許我已經算錯了位置,但在這裏,那不是問題)

回答

1

Python中的字符串是不可變的如此與尋求/寫的辦法是行不通的。使用切片。

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) 

拉鍊()有兩個或更多個序列,並與相應的元件返回耦合(元組)。隨着randcoder的提到,字符串是不可變的。當你修改一個字符串時,你實際上會創建一個新的修改過的字符串。因爲通常的做法是收集列表中的字符串片段。最後,列表連接到結果字符串。

1

感謝randcoder,切片工作就像一個魅力:

...loop: 

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

但這裏的問題是,在你的情況,你會用這個字符串''BIGHeBADllo世界和fWOLFoo bar''而不是結果落得你表現出來。 – 2012-04-30 15:35:32