首页 > 解决方案 > 如何使用python仅搜索分隔文本文件的第一列

问题描述

搜索管道“|”的第一列 使用 python 分隔的包含 1000 万行的 .txt 文件。第一列包含电话号码。我想输出该电话号码的整行

该文件是 5GB .txt 文件,我无法在 ms excel 或 ms 访问中打开它。所以我想编写一个python代码,可以搜索文件并打印出与特定电话号码匹配的整行。电话号码在第一列。我写了一个代码,但它搜索整个文件并且非常慢。我只想搜索第一列,我的搜索项是电话号码。

f = open("F:/.../master.txt","rt")      # open file master.txt
for line in f:                      # check each line in the file handle f
 if '999995555' in line:           # if a particular phone number is found
   print(line)                   # print the entire row
f.close()                            # close file

我希望将整行打印在屏幕上,其中第一列包含我正在搜索的电话号码。但这需要很多时间,因为我不知道代码,无法搜索该列。

标签: pythonpython-3.x

解决方案


那么你在正确的轨道上。由于它是一个 5GB 的文件,您可能希望避免为此分配 5GB 的 RAM。您可能会更好地使用.readline(),因为它是专为您的场景(一个大文件)而设计的。

像下面这样的东西应该可以解决问题,注意这.readline()将返回''文件末尾和'\n'空行。该.strip()调用只是删除实际在文件中每行末尾返回的那个'\n'.readline()

def search_file_line_prefix(path, search_prefix):
    with open(path, 'r') as file_handle:
        while (True):
            line = file_handle.readline()
            if line == '':
                break
            if line.startswith(search_prefix):
                yield line.strip()

for result in search_file_line_prefix('file_path', 'phone number'):
    print(result)

推荐阅读