这是我的代码:
#! /usr/bin/env python3
import subprocess
a = subprocess.check_output('echo -n "hello world!"',shell=True)
print("a="+str(a))
输出:
a=b'hello world!'
如果在对
universal_newlines=True
的调用中包含参数check_output
,则将得到所需的输出:a=hello world!
为了更好地理解现代(Unicode)时代使用文本进行编程的神秘世界,我想知道如何在不指定
universal_newlines=True
的情况下生成第二个输出。换句话说,我调用什么函数来转换a
,以便产生所需的输出。一个有效的例子将大有帮助。详细的解释很好,但是对于那些没有经验的人来说可能会有些困惑-可能是由于使用了重载的术语,可能是由于Python2和Python3之间的差异,或者仅仅是因为我很少需要考虑使用文本编码我的工作范围-我使用的大多数工具不需要这样的特殊处理。
另外:我相信第一个输出的类型为
bytes
,但是第二个输出的类型是什么?我的猜测是使用UTF-8编码的str
。 最佳答案
正如Ignacio的评论最初暗示的那样,您可以使用decode
:
>>> a = b"hello world!"
>>> print("a="+str(a))
a=b'hello world!'
>>> print("a="+a.decode())
a=hello world!
关于python - 仅打印字符串的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28590302/