检查一个字符串是否包含列表中的某个字符串 - Python

3
String = "Alienshave just discovered a way to open cans"
Arr=["Aliens","bird","cactus","John Cena"]

if any(words in String for words in arr):
       print String

这段脚本用于显示 外星人刚刚发现了一种打开罐头的方法

但是我不希望它打印字符串,因为字符串中的单词AlienshaveArr中找到的Aliens单词并不完全相同。

如何让比较的基础是数组中的字符串,并且不像通配符那样作用。

2个回答

4
使用正则表达式与单词边界(\b):
匹配空字符串,但仅在单词的开头或结尾处。单词被定义为一系列Unicode字母数字或下划线字符,因此单词的结尾由空格或非字母数字、非下划线的Unicode字符表示。请注意,形式上,\b被定义为\w\W字符(或反之)之间的边界,或者在字符串的开头/结尾和\w之间的边界。这意味着r'\bfoo\b'匹配'foo''foo.''(foo)''bar foo baz',但不匹配'foobar''foo3'
string = "Alienshave just discovered a way to open cans"
arr = ["Aliens","bird","cactus","John Cena"]

import re
pattern = r'\b({})\b'.format('|'.join(arr)) # => \b(Aliens|bird|cactus|John Cena)\b
if re.search(pattern, string):
    print(string)
# For the given `string`, above `re.search(..)` returns `None` -> no print

感谢您的��和解释。� - Boneyflesh

0

我使用了String.split()方法,它可以将字符串分割成单词。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接