Jod*_*dyK 6 python regex boundary
我使用python读取了一个巨大的文件块.然后我在那个块上应用正则表达式.基于标识符标记,我想提取相应的值.由于块大小,块边界处缺少数据.
要求:
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)
Run Code Online (Sandbox Code Playgroud)
块数据示例
好:与值数相等的标签数
标识符:值
标识符:值
标识符:值
标识符:值
由于块大小,您会遇到如下所列的不同边界问题.第三个标识符返回一个不完整的值,"v"而不是"value".下一个块包含"alue".这会导致解析后丢失数据.
错误:标识符值不完整
标识符:值
标识符:值
标识符: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)
Run Code Online (Sandbox Code Playgroud)