python - 如果项目不包含字符串,则从列表中删除项目

标签 python python-2.7

我有一个 URL 列表,想删除所有不包含 imgur 或 youtube 的。

somelist = ['google.com', 'facebook.com', 'imgur.com/9utwj.gif', 'youtube.com/ofskdofk', 'yahoo.com']
approved = ['imgur','youtube']

for app in approved:
    matching = [s for s in somelist if app in s]
    for match in matching:
        somelist.remove(match)
print somelist

返回

['google.com', 'facebook.com', 'yahoo.com']

所以从逻辑上讲,我觉得如果我把它改成 NOT in s....

matching = [s for s in somelist if app not in s]

它会删除所有不包含已批准 URL 的内容。但是,它不返回任何内容。

最佳答案

您可以使用 any查看 approved 中的任何字符串是否在某个列表的每个 url 中:

somelist = ['google.com', 'facebook.com', 'imgur.com/9utwj.gif', 'youtube.com/ofskdofk', 'yahoo.com']
approved = ['imgur','youtube']


somelist[:] = [url for url in somelist if any(sub in url for sub in approved)]

print(somelist)
['imgur.com/9utwj.gif', 'youtube.com/ofskdofk']

any 将在第一次匹配时短路,如果您的 url 有多个子字符串,它仍然只会添加 url 一次。

somelist[:] 只是意味着我们使用列表组合的效率更改原始列表/对象,而不是使用带有 list.remove 的常规 for 循环。

关于python - 如果项目不包含字符串,则从列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955946/

相关文章:

python - 如何在 Python 2.7 中以 dd 格式获取今天的日期

Python,获取html文档的文本值

python - 不确定为什么类似于冒泡排序的程序不起作用

python - 如何查看 Lambda/tmp 存储大小的大小?

python - Python HTML 请求中缺少属性

python - 为什么 scipy.stats.mstats.pearsonr 结果与 scipy.stats.pearsonr 不一致?

Python 写时复制行为

python - 对 csv 读取分割一切感到困惑

python - 需要为 python 3 安装 pip

python - 尝试使用 pyomo 和 bonmin 求解模型。模型未正确传递给求解器