如果该项包含单词,如何从python中的列表中删除项目

时间:2018-05-28 01:27:20

标签: python web-scraping

我有一个清单

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']

我想删除该列表中包含word" VOST"在链接中。这就是我所知道的以及我所尝试的内容:

a.remove('VOST')
print a

4 个答案:

答案 0 :(得分:4)

您可以尝试迭代每个项目并使用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)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您确实要删除就地项,那么以下内容可能对您有用:

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]

答案 3 :(得分:0)

怎么样

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