在大量文本段落中进行有效的字符串搜索

时间:2020-05-12 12:24:53

标签: python list concurrency

有一个200MB的大文本文件(由段落组成,用空白行分隔),其中包含我必须阅读然后搜索提供的userId(123456、111111、123457等)的用户信息(Id和职位)。 ..)。

文本文件示例:

   123456 some text
   Java Programmer
   some text
   ...
   111111 some text
   some text
   C++ Programmer
   some text
   ...
   123456 some text
   C++ Programmer
   ...
   123457 some text
   Python Programmer
   ...

我已将此文本文件读入列表,并用'\ n \ n'分隔符将各段分开:

file = open(largeFilePath)
lines_list = file.read().split('\n\n')

现在,我必须在此列表中搜索提供的ID(数字或字母数字)。 在大约2亿个字符的列表中顺序搜索单个userId大约需要20-30秒,并且至少有50-100个用户要搜索。

我正在寻找一种并行搜索的方法。

解决此问题的建议方法是什么?

谢谢

Zeev

1 个答案:

答案 0 :(得分:0)

您应该将它们编入字典:

def _extract_id(user_data):
    return user_data[0].partition()[0]

d = {_extract_id(data): data for data in lines_list}

>>> d["myid"]
"..."

结果将返回得更快。