在Python 3中将字节列表转换为字符串

9

我正在使用Python 3.4.1编写一个程序,该程序使用PySerial测试一些硬件设备。

从串口逐个字节读取字节,然后将其附加到列表中。当列表达到一定大小时,它将被发送进行处理。根据传入数据的不同,有时必须在列表填满之前处理数据,因此需要逐个字节操作。

然后,该列表会以以下形式返回:

[b'F', b'o', b'o']

对于测试脚本的一部分,我需要将其转换为字符串,以便我可以直接打印:

Foo

我的解决方案是:

b''.join([b'F', b'o', b'o']).decode("ascii")

但这种做法感觉不太对。是否有更好的方法?


1
不,没有更好的方法。你需要连接并解码。这就是生活。 - deets
这段代码很简短易读,我相信你不会遇到性能问题(因为它是一个串口..)。继续前进吧。 - Karoly Horvath
2个回答

3

在我看来,这个代码略微更易读一些,但如果我在审查中遇到你的代码,我也不会抱怨。已在Python 2.7中进行了测试:

>>> bytearray([b'F', b'o', b'o']).decode('ascii')
u'Foo'

1
谢谢。不幸的是,在3.4.1下,它不起作用。 我得到:TypeError:需要整数。 - Minifig666
啊,我认为你现在的方案是最好的。 - Alex Taylor

0

如果你不喜欢 join 的样子,你可以尝试以下方法:

bytes.join(b'', [b'F', b'o', b'o']).decode('ascii')

这跟你的代码几乎一模一样。我觉得你不会找到更好的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接