将列表元素与字符串进行比较
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')
我有以下列表
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')