Python 3:使用 REGEX 搜索大型文本文件

问题描述 投票:0回答:2

我希望使用正则表达式搜索大型文本文件并设置以下代码:

import re

regex = input("REGEX: ")

SearchFunction = re.compile(regex)

f = open('data','r', encoding='utf-8')

result = re.search(SearchFunction, f)

print(result.groups())

f.close()

当然,这不起作用,因为

re.search
的第二个参数应该是字符串或缓冲区。但是,我无法将所有文本文件插入到字符串中,因为它太长(意味着它会花费很长时间)。有什么替代方案?

python regex text python-3.x
2个回答
7
投票

您可以通过 mmap 模块使用内存映射文件。将其视为一个伪装成字符串的文件(或 StringIO 的反面)。您可以在 Doug Hellman 撰写的关于 mmap 的本周 Python 模块文章直接链接)中找到示例。


6
投票

检查每行的模式是否匹配。这不会将整个文件加载到内存中:

for line in f:
    result = re.search(SearchFunction, line)
© www.soinside.com 2019 - 2024. All rights reserved.