2014-09-24 154 views
1

我有以下格式的1GB的日誌文件(.txt),蟒蛇大文件解析

[ABC] [12.45] [bla bla bla] [12345] 
[DEF] [12.45] [bla bla bla] [12345] 

我試圖解析爲每個的[]數組。 到目前爲止,我已經嘗試numpy.genfromtxt,並通過打開文件逐行閱讀。 numpy給出了一些MemoryError與1GB文件。逐行法需要約35秒。

是否有任何其他庫或方法來解壓縮?

讀一行一行:

with open(filePath) as f: 
    for line in f: 
     splits = findall('\[(.*?)\]', line) 
     A.append(splits[0].strip()) 
     B.append(datetime.datetime.strptime(splits[2], '%H:%M:%S.%f')) 
     C.append(splits[4]) 
+0

你知道每行的大小是多少字節嗎? – 2014-09-24 19:43:51

+0

@RafaelBarros:不會有所不同。 – user2626431 2014-09-24 19:45:54

+1

你想要什麼?你需要隨機訪問?你使用每一行嗎? – Veedrac 2014-09-24 19:51:14

回答

1

可以加快使用str.split,而不是re.findall顯著解析。

with open('input.txt') as f: 
    for line in f: 
     splits = line.split('] [') 
     A.append(splits[0][1:]) 
     B.append(splits[1]) 
     C.append(splits[2]) 
     D.append(splits[3][:-1]) 
+0

謝謝!那是罪魁禍首。 – user2626431 2014-09-24 21:48:30