Python,如何替换列表中元素的多个部分(在列表中)

时间:2017-02-03 08:48:52

标签: python list

原始字符串列表:

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, "")

什么是正确的方法?谢谢。

4 个答案:

答案 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。我省略了一个工作示例,因为schwobasegglthangtn [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

这就是你需要的吗?