将字节转换为字符串?

我正在使用此代码从外部程序获取标准输出:

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

通信()方法返回一个字节数组:

>>> command_stdout
b'total 0n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2n'

但是,我想用普通的Python字符串处理输出。 这样我可以像这样打印它:

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

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

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

有谁知道如何将字节值转换回字符串? 我的意思是,使用“电池”而不是手动进行。 我希望它能与Python 3一致。


你需要解码bytes对象来产生一个字符串:

>>> b"abcde"
b'abcde'

# utf-8 is used here because it is a very common encoding, but you
# need to use the encoding your data is actually in.
>>> b"abcde".decode("utf-8") 
'abcde'

我认为这种方式很简单:

bytes = [112, 52, 52]
"".join(map(chr, bytes))
>> p44

您需要解码字节字符串并将其转换为字符(unicode)字符串。

b'hello'.decode(encoding)

要么

str(b'hello', encoding)
链接地址: http://www.djcxy.com/p/3547.html

上一篇: Convert bytes to a string?

下一篇: Java optional parameters