我正在尝试通过为我的工作开发一些 CLI 工具来学习 Python。
我有两个域列表,一个“去重”包含我从文本文件加载的完整域,另一个“毒”包含一些与某些域部分匹配的字符串。
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 ' requires string as left operand, not list
请您参考如下方法:
因为外层循环已经遍历了deduplicated,你需要内层循环遍历poison:
if any(search in item for search in poison):
print("Useless domain", item)
