python – 从另一个列表中搜索任何子字符串的字符串列表

给出这3个数据列表和关键字列表:

good_data1 = ['hello, world', 'hey, world']
good_data2 = ['hey, man', 'whats up']
bad_data = ['hi, earth', 'sup, planet']
keywords = ['world', 'he']

我正在尝试编写一个简单的函数来检查是否有任何关键字作为数据列表中任何单词的子字符串存在。它应该为good_data列表返回True,对bad_data应返回False。

我知道如何做到这一点似乎是一种低效的方式:

def checkData(data):
  for s in data:
    for k in keywords:
      if k in s:
        return True
  return False
在你的例子中,用这么少的东西,这并不重要。但是如果你有几千个项目的列表,这可能有帮助。

由于您不关心列表中的哪个元素包含该关键字,您可以扫描整个列表一次(作为一个字符串),而不是当时的一个项目。为此,您需要一个连接字符,您知道不会出现在关键字中,以避免误报。我在这个例子中使用换行符。

def check_data(data):
    s = "\n".join(data);
    for k in keywords:
        if k in s:
            return True

    return False

在我完全不科学的测试中,我的版本在大约30秒内检查了5000个项目的列表100000次。 3分钟后我停止了你的版本 – 厌倦了等待发布=)

http://stackoverflow.com/questions/749342/search-a-list-of-strings-for-any-sub-string-from-another-list

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 从另一个列表中搜索任何子字符串的字符串列表