python - 在多个字符串中查找多个字符串

时间:2017-08-16 20:11:24

标签: python

我可以用它来判断一组多个字符串是否存在于另一个字符串中,

bar = 'this is a test string'
if any(s in bar for s in ('this', 'test', 'bob')):
    print("found")

但我不确定如何检查一组多个字符串中是否出现中的任何字符串。看起来这会起作用。从语法上讲,它不会失败,但它也不会打印出任何东西:

a = 'test string'
b = 'I am a cat'
c = 'Washington'
if any(s in (a,b,c) for s in ('this', 'test', 'cat')):
    print("found")

3 个答案:

答案 0 :(得分:2)

此时,可能值得编译您正在寻找的子串的正则表达式,然后只使用它进行一次检查......这意味着您只扫描每个字符串一次 - 不可能三次(或者你正在寻找的子字符串数量很多)并保持any检查的单一理解水平。

import re

has_substring = re.compile('this|test|cat').search
if any(has_substring(text) for text in (a,b,c)):
    # do something

请注意,您可以将表达式修改为仅搜索整个单词,例如:

has_word = re.compile(r'\b(this|test|cat)\b').search

答案 1 :(得分:1)

需要遍历测试字符串的元组:

a = 'test string'
b = 'I am a cat'
c = 'Washington'
if any(s in test for test in (a,b,c) for s in ('this', 'test', 'cat')):
    print("found")

答案 2 :(得分:1)

你可以试试这个:

a = 'test string'
b = 'I am a cat'
c = 'Washington'

l = [a, b, c]

tests = ('this', 'test', 'cat')

if any(any(i in b for b in l) for i in tests):
    print("found")