巨大的純文本數據文件
我讀了使用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