Python3读取压缩归档文件中的文件时,在每个lin的开头放置“b”字符

2024-05-19 15:39:50 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我总是得到一个奇怪的输出,它将b放在每一行之前。只有字母b

例如,示例输出如下:

[b'2017-06-01,15:19:57,']

脚本本身是这样的:

^{pr2}$

归档文件中有一个名为“logs”的文件夹,在logs中有几个文本文件,每个文本文件的第一行空白(因此next(myfile)

无论文件放在哪个位置,都要先读取。如果一个文件中有多行,它会输出如下内容:

[b'2017-06-01,15:06:28,start session: \n', b'2017-06-01,15:06:36,stop session']

为什么要把讨厌的b放在那里?在


Tags: 文件代码脚本文件夹示例内容session字母
3条回答

因为zip是二进制格式,在从中读取时,它给出bytes,而不是{}。在

您可以使用str.decode()进行转换

例如

>>>byte_string = b'2017-06-01,15:06:28,start session: \n'
>>>byte_string.decode()
2017-06-01,15:06:28,start session: \n

会给你想要的str

在Python3中,(来自文档)字节字面值总是以“b”或“b”作为前缀;它们生成字节类型的实例,而不是str类型。它们只能包含ASCII字符;数值大于等于128的字节必须用转义符表示。在

这只是澄清打印输出中的格式。如果要输出不带此格式的字符串,可以使用如下格式字符串:

print("%s" % myfile.readlines())

在Python3.x中,字符串和字节数据是有区别的。当将字节表示为字符串时,Python添加b前缀来表示。如果要将bytes视为字符串,首先需要将它们解码为字符串:

your_string = your_bytes.decode("utf-8") 

当然,您将使用的编解码器取决于字符串最初是如何编码成字节的。在

相关问题 更多 >