巨大的纯文本数据文件
我读了使用python块一个巨大的文件。然后我在该块上应用正则表达式。基于标识符标记,我想提取相应的值。由于块大小,数据在块边界处缺失。的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)
组块数据的例子
良好:数量的标签等效于值的数量
标识符:价值
标识符:价值
标识符:价值
标识符:价值
由于块大小,你就会得到不同的边界问题,如下所示。第三个标识符返回一个不完整的值,“v”代替“value”。下一个块包含“alue”。这会导致解析后丢失的数据。
坏:标识值不完整
标识符:价值
标识符:价值
标识符:v
你怎么解决块边界问题这样吗?
也许你可以在这里找到你的答案:[Python正则表达式解析流](https://stackoverflow.com/questions/4634376/python-regex-parse-stream) –
也在这里:[正则表达式在流而不是字符串?(https://stackoverflow.com/questions/13004359/regular-expression-on-stream-instead-of-string) –
因为你的模式行边界上出现,也许你可以只一次读取一行并在行上而不是块上匹配。 – Himanshu