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

Min*_*666 5 python string byte

我正在用Python 3.4.1编写一个程序,它使用PySerial来测试一些硬件.

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

该列表随后返回:

[b'F', b'o', b'o']
Run Code Online (Sandbox Code Playgroud)

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

Foo
Run Code Online (Sandbox Code Playgroud)

我的解决方案是:

b''.join([b'F', b'o', b'o']).decode("ascii")
Run Code Online (Sandbox Code Playgroud)

但它只是感觉不对.有更好的方法吗?

Ale*_*lor 5

IMO,这稍微更具可读性,但如果我在审核中遇到您的代码,我不会抱怨.在Python 2.7中测试:

>>> bytearray([b'F', b'o', b'o']).decode('ascii')
u'Foo'
Run Code Online (Sandbox Code Playgroud)


Mik*_*mov 0

如果您不喜欢join外观,可以执行以下操作:

bytes.join(b'', [b'F', b'o', b'o']).decode('ascii')
Run Code Online (Sandbox Code Playgroud)

这与您的代码中几乎相同。我认为您不会找到更好的方法。