我有一个 1GB 的日志文件(.txt),格式如下,
[ABC] [12.45] [bla bla bla] [12345]
[DEF] [12.45] [bla bla bla] [12345]
我正在尝试将其解析为每个 [] 的数组。 到目前为止,我已经尝试过 numpy.genfromtxt 并通过打开文件逐行读取。 numpy 给出 1GB 文件的一些 MemoryError 。逐行方法大约需要 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])
最佳答案
您可以使用 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])
关于python大文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025148/