巨大的纯文本数据文件
我使用 python 读取了一个大文件。然后我在该块上应用正则表达式。我想根据一个标识符标签提取相应的值。由于块大小的原因,数据在块边界处丢失。
要求:
- 必须以块的形式读取文件。
- 块大小必须小于
或等于 1 GiB。
Python 代码示例
identifier_pattern = re.compile(r'Identifier: (.*?)\n')
with open('huge_file', 'r') as f:
data_chunk = f.read(1024*1024*1024)
m = re.findall(identifier_pattern, data_chunk)
块数据示例
Good:标签数量等于值数量
标识符:值
标识符:值
标识符:值
标识符:值
由于块大小的原因,您会遇到如下所列的不同边界问题。第三个标识符返回不完整的值,“v”而不是“value”。下一个块包含“alue”。这会导致解析后丢失数据。
Bad:标识符值不完整
标识符:值
标识符:值
标识符:v
如何解决这样的块边界问题?
假设这就是您的确切问题,您可能只需调整正则表达式并逐行读取(这不会将完整文件加载到内存中):
import re
matches = []
identifier_pattern = re.compile(r'Identifier: (.*?)$')
with open('huge_file') as f:
for line in f:
matches += re.findall(identifier_pattern, line)
print("matches", matches)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)