【问题标题】:how to remove an item from a list in python if that item contains a word如果该项目包含一个单词,如何从python列表中删除该项目
【发布时间】:2018-11-06 13:21:33
【问题描述】:

我有一个清单

a = ['https://example.co/embed/qACAB6TukkU/The.Ha-az.VOST.WEBRip.XviD-ZT.W.avi',
     'https://example.co/embed/l31lsZilT2E/The.Ha-az-ndmaids.FR.HDTV.XviD-ZT.W.avi',
     'https://example.com/embed/soslnnqnmccmplfa/The_Ha-az02_VOST_WEBRip_XviD-ZT_W_avi',
     'https://example.com/embed/pffpmptfpdfqddap/The_Ha-az-_Tale_S2_FRENCH_HDTV_XviD-ZT_W_avi']

我想删除该列表中链接中包含单词“VOST”的所有项目。这是我所知道和尝试过的:

a.remove('VOST')
print a

【问题讨论】:

标签: python web-scraping


【解决方案1】:

您可以尝试遍历每个项目并使用list comprehension 对其进行过滤:

filtered = [i for i in a if 'VOST' not in i]

上面的代码是类似的更好的方法:

filtered = []
for i in a:
    if 'VOST' not in i:
        filtered.append(i)

如果您想使用remove,您可以遍历每个项目并检查要查找的单词是否在项目中,然后删除项目。你可以试试下面的代码:

注意这将从原始列表中删除该项目,上一个答案会创建名为的新列表filtered

for i in a:
    if 'VOST' in i:
        a.remove(i)

【讨论】:

    【解决方案2】:

    我是初学者,但我不认为使用 a.remove 会起作用,因为从列表中删除一个项目会搞砸未来项目的索引。创建一个新列表并附加不包含“VOST”的项目是一个更好的解决方案。

    【讨论】:

    • 实际上可以删除原地物品 - 请参阅我的回答。你只需要以相反的顺序迭代。
    【解决方案3】:

    如果您确实想就地删除项目,那么以下方法可能适合您:

    for i in [i for i, v in enumerate(a) if 'VOST' in v][::-1]:
        del a[i]
    

    或者,

    for i in reversed([i for i, v in enumerate(a) if 'VOST' in v]):
        del a[i]
    

    或者,

    for i in reversed(range(len(a))):
        if 'VOST' in a[i]:
            del a[i]
    

    【讨论】:

      【解决方案4】:

      怎么样

      filter(lambda x: "VOST" not in x, a)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-18
        • 2019-07-12
        • 2018-04-20
        • 1970-01-01
        • 2022-08-13
        • 2023-01-24
        相关资源
        最近更新 更多