检查Python列表项是否在另一个列表中包含字符串
我正试图通过为我的工作开发一些CLI工具来学习python 我有两个域列表,一个“重复数据消除”包含我从文本文件加载的完整域,另一个“毒药”包含一些与某些域部分匹配的字符串检查Python列表项是否在另一个列表中包含字符串,python,regex,Python,Regex,我正试图通过为我的工作开发一些CLI工具来学习python 我有两个域列表,一个“重复数据消除”包含我从文本文件加载的完整域,另一个“毒药”包含一些与某些域部分匹配的字符串 deduplicated = ['facebook.com','google.com','en.wikipedia.org','youtube.com','it.wikipedia.org'] poison = ['youtube','wikipedia'] 我正在尝试匹配字符串的“毒药”列表,以获得两个新列表,一个是“
deduplicated = ['facebook.com','google.com','en.wikipedia.org','youtube.com','it.wikipedia.org']
poison = ['youtube','wikipedia']
我正在尝试匹配字符串的“毒药”列表,以获得两个新列表,一个是“干净的”(毒药列表未匹配的域),另一个是“脏的”(已部分匹配)
这是我的尝试,但不起作用
clean = []
dirty = []
for item in deduplicated:
if (any(poison in word for word in deduplicated)):
print ("useless domain %s" % item)
dirty.append(item)
else:
print ("nice domain %s" % item)
clean.append(item)
更新:
编辑了代码,因为格式很难看
为了将来参考,我得到的错误是:
TypeError:“in”需要字符串作为左操作数,而不是列表
由于外循环已循环<代码>重复数据消除,因此需要使用内循环来循环<代码>毒药:
if any(search in item for search in poison):
print("Useless domain", item)
由于外循环已循环<代码>重复数据消除,因此需要使用内循环来循环<代码>毒药:
if any(search in item for search in poison):
print("Useless domain", item)
如果我没记错的话,你想做的是:
dirty = [word for word in deduplicated if any(unwanted in word for unwanted in poison)]
clean = [word for word in deduplicated if word not in dirty]
print(dirty) # => ['en.wikipedia.org', 'youtube.com', 'it.wikipedia.org']
print(clean) # => ['facebook.com', 'google.com']
您的代码目前有两个问题:
- 您迭代
s,但在检查中不使用它们项
- 缩进错误。Python对空格很敏感
dirty = [word for word in deduplicated if any(unwanted in word for unwanted in poison)]
clean = [word for word in deduplicated if word not in dirty]
print(dirty) # => ['en.wikipedia.org', 'youtube.com', 'it.wikipedia.org']
print(clean) # => ['facebook.com', 'google.com']
您的代码目前有两个问题:
- 您迭代
s,但在检查中不使用它们项
- 缩进错误。Python对空格很敏感