在 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'
我有一个很大的 .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'