我有一些文本文件需要处理(但不是提取),从一个tar档案中。我有工作的Python 2代码,我正试图将其提升到Python 3。不幸的是,Python 3返回的是字节字符串,其他代码无法正确处理。我需要将字节字符串转换为字符串。一个简单的例子是这样的。
import tarfile
with tarfile.open("file.tar") as tar:
with tar.extractfile("test.txt") as extracted:
lines = extracted.readlines()
print(lines)
The result is:
['a\n', 'test\n', 'file\n'] # python 2
[b'a\n', b'test\n', b'file\n'] # python 3
下面是目前的一些修复尝试,这些尝试是有效的,然而,我需要使用带有语句、列表理解或地图的三合一来阅读一些文字,感觉很别扭。
with io.TextIOWrapper(extracted) as txtextracted:
lines = txtextracted.readlines()
lines = [i.decode("utf-8") for i in lines]
lines = list(map(lambda x: x.decode("utf-8"),lines))
我在io.BufferedReader
的文档中找不到一个更整齐的解决方案(这是TarFile.extractfile
返回的对象)。我试着想出了一些解决方案,但没有一个能像python 2的解决方案那样整洁。有没有一个整洁的pythonic方法来解析tar文件的io.BufferedReader
对象为字符串?