我可以用它来判断一组多个字符串是否存在于另一个字符串中,
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")
答案 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")