检查字符串是否包含列表python中的字符串

时间:2017-02-25 16:42:04

标签: python string

Alienshave just discovered a way to open cans

此脚本显示print

但我不希望它String Alienshave,因为String中的Aliens字与Arr中的字argparse不完全相同1}}

我如何做到这一点,以便比较的基础是数组中的字符串,并且不像通配符那样行事。

2 个答案:

答案 0 :(得分:4)

使用带有字边界(\b)的正则表达式:

  

匹配空字符串,但仅匹配单词的开头或结尾。   单词被定义为Unicode字母数字或下划线的序列   字符,所以单词的结尾用空格或a表示   非字母数字,非下划线Unicode字符。注意   正式地,\b被定义为\w\W之间的边界   字符(反之亦然),或\ w和\ n的开头/结尾   串。这意味着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

答案 1 :(得分:0)

我使用String.split()将字符串拆分为单词。