如何更快地搜索文字?

时间:2019-06-28 04:13:54

标签: python search

我想知道文本是否包含列表中的任何文本。

我写了下面的代码。

但是它需要循环,我认为有可能更快。

请告诉我更快的代码?

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()

2 个答案:

答案 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)