猿问

将字节转换为字符串?

将字节转换为字符串?

我使用这段代码从外部程序获得标准输出:


>>> from subprocess import *

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

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


>>> 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 thomas thomas 0 Mar  3 07:03 file1

-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2

我以为这就是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'

有人知道如何将字节值转换回字符串吗?我是说,用“电池”而不是手工操作。我希望Python 3没有问题。


红糖糍粑
浏览 660回答 4
4回答

POPMUISE

您需要解码字节对象以生成字符串:>>> 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

慕工程0101907

您需要对字节字符串进行解码,并将其转换为字符(Unicode)字符串。b'hello'.decode(encoding)或者在Python 3上str(b'hello', encoding)
随时随地看视频慕课网APP

相关分类

Python
我要回答