在 python 中逐行迭代大型 .xz 文件

Iterate a large .xz file line by line in python

我有一个很大的 .xz 文件(几千兆字节)。它充满了纯文本。我想处理文本以创建自定义数据集。我想逐行阅读它,因为它太大了。有人知道怎么做吗?

我已经试过了 How to open and read LZMA file in-memory 但它不起作用。

编辑: 我收到此错误 'ascii' 编解码器无法解码位置 0 中的字节 0xfd:序号不在范围内 (128)

来自 link

for line in uncompressed:

EDIT2:我的代码(使用 python 3.5)

with open(filename) as compressed:
    with lzma.LZMAFile(compressed) as uncompressed:
        for line in uncompressed:
            print(line)

几周前我遇到了同样的问题。这段代码对我有用:

import lzma
with lzma.open('filename.xz', mode='rt') as file:
    for line in file:
       print(line)

这假设压缩文件中的文本数据以 utf-8 编码(我的数据就是这种情况)。函数 lzma.open() 中有一个 encoding 参数,它允许您根据需要设置另一个编码

编辑(在您自己编辑之后):尝试在 lmza.open()

中强制执行 encoding='utf-8'