Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Python列表项是否在另一个列表中包含字符串_Python_Regex - Fatal编程技术网

检查Python列表项是否在另一个列表中包含字符串

检查Python列表项是否在另一个列表中包含字符串,python,regex,Python,Regex,我正试图通过为我的工作开发一些CLI工具来学习python 我有两个域列表,一个“重复数据消除”包含我从文本文件加载的完整域,另一个“毒药”包含一些与某些域部分匹配的字符串 deduplicated = ['facebook.com','google.com','en.wikipedia.org','youtube.com','it.wikipedia.org'] poison = ['youtube','wikipedia'] 我正在尝试匹配字符串的“毒药”列表,以获得两个新列表,一个是“

我正试图通过为我的工作开发一些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”需要字符串作为左操作数,而不是列表


由于外循环已循环<代码>重复数据消除,因此需要使用内循环来循环<代码>毒药:

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对空格很敏感

你的输出是什么,你想要的输出是什么?@mikeb我用我得到的错误更新了问题。你的输出是什么,你想要的输出是什么?@mikeb我用我得到的错误更新了问题。关于迭代你是对的!缩进是我无法正确格式化Stackoverflow中的代码编辑器!我使用的是升华文本,它可以很好地管理缩进。你对迭代的看法是对的!缩进是因为我无法在Stackoverflow编辑器中正确格式化代码!我使用的是升华文本,它可以很好地管理缩进。