我想知道文本是否包含列表中的任何文本。
我写了下面的代码。
但是它需要循环,我认为有可能更快。
请告诉我更快的代码?
subject_type_list = ['dog','cat','sheep','turtle']
searched_text = 'wertyuisdfghdog;;rtyuiobnmcatuio'
def confirm_existence():
for search_word in subject_type_list:
if search_word in searched_text:
return True
return False
confirm_existence()
答案 0 :(得分:0)
您的代码很好,我想这是解决问题的正常方法。如果您正在寻找更简洁的方法,可以使用crontab
重写函数:
any
或者直接使用subject_type_list = ['dog','cat','sheep','turtle']
searched_text = 'wertyuisdfghdog;;rtyuiobnmcatuio'
def confirm_existence():
return any(x in searched_text for x in subject_type_list)
print( confirm_existence() ) # True
:
any
答案 1 :(得分:0)
您可以使用正则表达式丢弃for
循环。有一本出色的手册here。
是否更快,主要取决于搜索模式的数量和字符串的长度。如果您有大量搜索模式和/或长搜索字符串,则使用正则表达式的解决方案将更快。这样的事情应该可以解决问题。
import re
subject_type_list = ["dog", "cat", "sheep", "turtle"]
searched_text = "wertyuisdfghdog;;rtyuiobnmcatuio"
pattern = re.compile(r"|".join(subject_type_list))
matches = pattern.find(searched_text)