例如,我有一个这样的字符串(subprocess.check_output
的返回值):
>>> b'a string'
b'a string'
无论我对它做了什么,它总是在字符串前面烦人地打印出b'
:
>>> print(b'a string')
b'a string'
>>> print(str(b'a string'))
b'a string'
有人有关于如何将它用作普通字符串或将其转换为普通字符串的想法吗?
例如,我有一个这样的字符串(subprocess.check_output
的返回值):
>>> b'a string'
b'a string'
无论我对它做了什么,它总是在字符串前面烦人地打印出b'
:
>>> print(b'a string')
b'a string'
>>> print(str(b'a string'))
b'a string'
有人有关于如何将它用作普通字符串或将其转换为普通字符串的想法吗?
解码它。
>>> b'a string'.decode('ascii')
'a string'
要从字符串中获取字节,请对其进行编码。
>>> 'a string'.encode('ascii')
b'a string'
utf-8
(根据str.encode
、bytes.decode
文档字符串,在Python 3.x中默认),则无需指定编码。 - falsetruimport locale
,然后os_encoding = locale.getpreferredencoding()
。这样,我们可以使用my_b_string.decode(os_encoding)
进行解码。 - atureganosys.getfilesystemenconding()
、sys.stdin.encoding
、sys.stdout.encoding
。我认为使用这些自动编码检测可以解决问题,因为子程序(OP正在使用子进程)可能会以其他方式编写来确定编码(甚至硬编码)。不管怎样,感谢您的反馈。 - falsetru