将列表元素与字符串进行比较

compare list elment to a string

我有以下列表

l=['web','python']

和以下字符串

st='python, C, something, find' 

我想检查列表中的任何元素是否在字符串中

我试过使用

any(x in l for x in st) 

然而它给出了错误

似乎python无法识别字符串中的元素,有没有办法检查从列表到字符串的元素是否匹配。我成功地使用了一个 for 循环并将字符串拆分为一个列表,但是对于实际数据来说效率不高,因为它包含很长的列表和字符串。需要一些有效的东西。 谢谢

您首先需要拆分字符串,否则您将遍历各个字符。

试试这个:

l=['web','python']
st='python, C, something, find'

any([x in l for x in st.split(',')]) # True

但这不是最有效的。为了获得更好的性能,您可以考虑使用 trie.

如果您想检查列表中的任何元素是否在字符串中 那么你的代码应该是

any(x in st for x in l)

你可以用这个方法

word_list = ['web','python']
string = 'python, C, something, find'   

exist = filter(lambda x : x in string , word_list)
print(list(exist))

输出:

['python']

你很接近。怎么样:

any(x in l for x in st.replace(',', '').split())

其中 return 个:

True

另一种方法:

import re
re.search(r'\b(' + '|'.join(l) + r')\b', st)

搜索将 return None 如果没有匹配项,如果有则匹配项。您可以像这样使用它:

if re.search(r'\b(' + '|'.join(l) + r')\b', st):
    print(f'there was a match: {t.groups()}')
else:
    print('no match')