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.seek(pos),但是当我想用字符串写它时,我不能使用 seek。有等效的方法吗?

谢谢,(也许我算错了位置,但这不是问题)

4

3 回答 3

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() 接受两个或更多序列并返回具有相应元素的对(元组)。正如 randcoder 提到的那样,字符串是不可变的。当您修改一个字符串时,您实际上创建了一个新的、已修改的字符串。因此,通常的做法是将字符串片段收集在一个列表中。最后,列表连接到结果字符串。

于 2012-04-27T20:39:20.807 回答
1

Python 字符串是不可变的,因此使用 seek/write 的方法将不起作用。使用切片。

于 2012-04-27T14:23:35.053 回答