python大文件解析

标签 python numpy

我有一个 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/

相关文章:

Python 不识别软链接(soft link)变化

python - 如何使用 find() 查找整个字符串

python - 使用 numpy 向量化方程

python-3.x - 如何安全地将 float64 舍入并固定到 int64?

python - 如何计算两个 ZIP 之间的距离?

Python菱形方 block 算法实现

python - OpenPyXL - 检查某个单词是否存在于单元格内的一系列单词中

python - 如何沿矩阵轴执行滚动求和?

python - 以 Python 方式使用列表对 numpy 数组进行索引

python - 如何将for循环每次迭代的结果存储到python中的数组中