Python3: 如何读取txt.bz2文件
Python3: how to read the txt.bz2 file
有bz2文件压缩的文本块。
文本文件中的数据如下。
1 x3, x32, f5
0 f4, g6, h7, j9
.............
我知道如何通过以下代码加载文本文件
rf = open('small.txt', 'r')
lines = rf.readlines()
lst_text = []
lst_label = []
for line in lines:
line = line.rstrip('\n')
label, text = line.split('\t')
text_words = text.split(',')
lst_text.append(text_words)
lst_label.append(int(label))
但txt压缩后为small.txt.bz2文件。
我想用下面的数据读取bz2文件,但是有错误。
import bz2
bz_file = bz2.BZ2File("small.txt.bz2")
lines = bz_file.readlines()
for line in lines:
line = line.rstrip('\n')
label, text = line.split('\t')
text_words = text.split(',')
print(label)
错误:
line = line.rstrip('\n')
TypeError: a bytes-like object is required, not 'str'
你能给我提示如何处理它吗,代码最好。谢谢!
您收到此错误是因为 BZ2file
对象以 binary 模式打开文件。所以你的 line
是一个 bytes 对象,而不是一个字符串。您或许可以使用 line = line.rstrip(b'\n')
来解决这个问题。但是结果行仍然是字节对象。
但您可能应该在文本模式下使用 bz2.open
:
with bz2.open("small.txt.bz2", "rt") as bz_file:
for line in bz_file:
label, text = line.rstrip('\n').split('\t')
text_words = text.split(',')
print(label)
有bz2文件压缩的文本块。 文本文件中的数据如下。
1 x3, x32, f5
0 f4, g6, h7, j9
.............
我知道如何通过以下代码加载文本文件
rf = open('small.txt', 'r')
lines = rf.readlines()
lst_text = []
lst_label = []
for line in lines:
line = line.rstrip('\n')
label, text = line.split('\t')
text_words = text.split(',')
lst_text.append(text_words)
lst_label.append(int(label))
但txt压缩后为small.txt.bz2文件。 我想用下面的数据读取bz2文件,但是有错误。
import bz2
bz_file = bz2.BZ2File("small.txt.bz2")
lines = bz_file.readlines()
for line in lines:
line = line.rstrip('\n')
label, text = line.split('\t')
text_words = text.split(',')
print(label)
错误:
line = line.rstrip('\n')
TypeError: a bytes-like object is required, not 'str'
你能给我提示如何处理它吗,代码最好。谢谢!
您收到此错误是因为 BZ2file
对象以 binary 模式打开文件。所以你的 line
是一个 bytes 对象,而不是一个字符串。您或许可以使用 line = line.rstrip(b'\n')
来解决这个问题。但是结果行仍然是字节对象。
但您可能应该在文本模式下使用 bz2.open
:
with bz2.open("small.txt.bz2", "rt") as bz_file:
for line in bz_file:
label, text = line.rstrip('\n').split('\t')
text_words = text.split(',')
print(label)