在 Python 3 中将字节转换为字符串
问题:
您已经捕获了外部程序的标准输出转换为字节对象,并且需要将其显示为字符串。例如:
import subprocess p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE) stdout, _ = p.communicate()
这将产生一个字节对象,如下所示:
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n'
您的目标是将这个字节对象转换为标准 Python 字符串。
解决方案:
要将字节对象 stdout 转换为 Python 3 中的字符串,请使用解码()方法。此方法将字节对象的编码作为参数。操作方法如下:
decoded_stdout = stdout.decode("encoding")
选择编码:
编码参数指定用于解码字节的字符集。在给出的示例中,假定 UTF-8 为默认编码。但是,使用数据的实际编码非常重要。
如果您不知道编码,可以尝试使用“utf-8”。或者,您可以使用 chardet 等库自动检测编码。
示例:
使用 UTF-8 作为假定编码:
decoded_stdout = stdout.decode("utf-8")
您现在可以打印解码后的字符串:
print(decoded_stdout) # Output: # -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
以上是如何在 Python 3 中将字节对象转换为字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!