Python 中的字节编码和解码:字符串转换指南
与外部程序交互或处理二进制数据时,经常会遇到字节对象。为了有效地使用它们,可能需要与字符串进行转换。本文将解决有关将包含外部命令输出的字节对象转换为常规 Python 字符串的特定问题。
问题:将字节转换为字符串
考虑以下来自 Python 3 的示例:
>>> from subprocess import * >>> stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0] >>> 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'
stdout 变量包含一个表示 'ls 输出的 bytes 对象-l'命令。要以人类可读的格式打印,需要将其转换为字符串。
解决方案:使用 Decode 方法
使用decode() 方法将字节对象转换为字符串。它需要一个编码参数,该参数指定 bytes 对象中数据的字符编码。
>>> stdout_str = stdout.decode('utf-8') >>> print(stdout_str) -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1 -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
在此示例中,我们指定 'utf-8' 作为编码,因为它是文本的常见编码数据。但是,对正在处理的特定数据使用正确的编码非常重要。
注意:
虽然上述解决方案适用于转换表示文本数据的字节对象,重要的是要注意并非所有字节对象都包含文本。为了处理二进制数据,可能需要不同的技术。
以上是如何在 Python 中将外部命令中的字节对象转换为字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!