我正在寻找一个执行以下搜索的单行Python表达式:
targets = ['habble', 'norpouf', 'blantom']
entry = "Sorphie porre blantom nushblot"
found=False
for t in targets :
if t in entry :
found = True
break
print ("found" if found else "not found")
这样我们就可以写一些 之类的 :
print("found" if entry.contains(targets) else "not found")
答案 0 :(得分:5)
您可以使用any
:
targets = ['habble', 'norpouf', 'blantom']
entry = "Sorphie porre blantom nushblot"
result = 'found' if any(i in entry for i in targets) else 'not found'
答案 1 :(得分:2)
>>> targets = {'habble', 'norpouf', 'blantom'}
>>> entry
'Sorphie porre blantom nushblot'
>>> targets.intersection(entry.split())
{'blantom'}
但有一个问题是标点符号,例如:
>>> entry = "Sorphie porre blantom! nushblot"
>>> targets.intersection(entry.split())
set()
但这仍然可行:
>>> 'blantom' in "Sorphie porre blantom! nushblot"
True
你也可以用另一种方式论证,并说in
可能不是你真正想要的行为,例如:
>>> entry = "Sorphie porre NOTblantom! nushblot"
>>> 'blantom' in entry
True
这真的取决于你的特定问题,但我认为@ Ajax1234在这里有优势。