【发布时间】:2015-09-13 21:36:00
【问题描述】:
我有一个大字符串和大量较小的子字符串,我正在尝试检查每个子字符串是否存在于较大的字符串中并获取每个子字符串的位置。
string="some large text here"
sub_strings=["some", "text"]
for each_sub_string in sub_strings:
if each_sub_string in string:
print each_sub_string, string.index(each_sub_string)
问题是,由于我有大量子字符串(大约一百万),因此需要大约一个小时的处理时间。有什么方法可以减少这个时间,也许是通过使用正则表达式或其他方式?
【问题讨论】:
-
使用多个线程怎么样?
-
虽然你做了很多额外的工作,因为在搜索一个子字符串时,你可能会找到另一个。
-
@Marged 实际上,我也有大量字符串,我正在使用 python 的多处理模块为每个字符串生成一个单独的进程。我还没有考虑为子字符串运行多个线程。
-
@RishavKundu 是的。这就是为什么我考虑使用正则表达式并将所有子字符串组合在一起的原因。有什么方法可以将它们组合在一起使用普通字符串处理进行搜索?
-
@Amith 您可能对此感兴趣en.wikipedia.org/wiki/Rabin–Karp_algorithm#Multiple_pattern_search