原始字符串列表:
Originals = ["nice apple", "orange", "pear sweet", "red ape"]
要删除的字符串列表:
To_remove = ["nice ", " sweet"]
我想要实现的是删除原始单词中每个元素中需要删除的字符串
result: ["apple", "orange", "pear", "red ape"]
我做了以下但是没有产生好结果。
for t in To_remove:
for o in Originals:
print o.replace(t, "")
什么是正确的方法?谢谢。
答案 0 :(得分:3)
因为string是不可变的,所以必须重新分配list元素。
for t in To_remove:
for i, o in enumerate(Originals):
Originals[i] = o.replace(t, "")
print Originals
希望这会有所帮助。
答案 1 :(得分:3)
字符串是不可变的。因此,您可以调用字符串的方法都不会进行就地修改。它们都返回一个新字符串,因此您必须重新分配replace
返回的字符串:
for t in To_remove:
for i in range(len(Originals)):
Originals[i] = Originals[i].replace(t, "")
您可以查看此question了解如何合并多个模式的替换。
答案 2 :(得分:1)
您正在打印替换的结果,但不要更改列表内容。如果您仔细查看replace method(对于字符串 s(!)),您会发现您不仅没有更改列表而且还没有更改字符串你得到for o in Originals
。我省略了一个工作示例,因为schwobaseggl和thangtn [1] 已经提供了它。
[1] 谁真的是第一个? SO时间戳与我的个人经历相矛盾。
答案 3 :(得分:1)
Originals = ["nice apple", "orange", "pear sweet", "red ape"]
To_remove = ["nice ", " sweet"]
result = []
for o in Originals:
for t in To_remove:
result.append(o.replace(t, ""))
print result
这就是你需要的吗?