python - Bytes to string - 将字节转换为字符串

Python2 bytes to string / python / string / python-3.x

我正在用这段代码从一个外部程序获得标准输出。

>>> from subprocess import *
>>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]

communicate()方法返回一个字节数组。

>>> command_stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2\n'

然而,我想把输出作为一个正常的Python字符串来处理。这样,我就可以像这样打印它。

>>> print(command_stdout)
-rw-rw-r-1托马斯托马斯0 Mar 3 07:03 file1
-rw-rw-r-1托马斯托马斯0 Mar 3 07:03 file2

我认为这就是binascii.b2a_qp()方法的用途,但是当我尝试使用它时,我又得到了相同的字节数组:

>>> binascii.b2a_qp(command_stdout)
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2\n'

Peter Mortensen



Answer #1
b'hello'.decode()

等于

b'hello'.decode(encoding="utf-8")

另一方面,在Python 2中,编码默认为默认的字符串编码。因此,您应该使用:

b'hello'.decode(encoding)