【发布时间】:2015-02-18 17:46:03
【问题描述】:
这是我的代码:
#! /usr/bin/env python3
import subprocess
a = subprocess.check_output('echo -n "hello world!"',shell=True)
print("a="+str(a))
输出:
a=b'hello world!'
如果我在对check_output 的调用中包含参数universal_newlines=True,那么我会得到所需的输出:
a=hello world!
为了更好地了解现代 (Unicode) 时代文本编程的神秘世界,我想知道如何在不指定 universal_newlines=True 的情况下生成第二个输出。换句话说,我应该调用什么函数来转换a,以便它产生所需的输出。
一个可行的例子会有很长的路要走。详细的解释很好,但对于初学者来说往往有点混乱——可能是由于使用了重载的术语,可能是因为 Python2 和 Python3 之间的差异,或者可能只是因为我很少需要考虑文本编码我的工作——我使用的大多数工具都不需要像这样的特殊处理。
另外:我相信第一个输出的类型是bytes,但是第二个输出的类型是什么?我的猜测是 str 使用 UTF-8 编码。
【问题讨论】:
-
你试过解码输出吗?
-
@IgnacioVazquez-Abrams:当然,我试图弄清楚这一点,但我最初的几个猜测并没有成功。我希望有人可以告诉我如何做到这一点。语法是什么?涉及哪些数据类型?等等。我相信这对于已经知道如何操作的人来说非常容易。希望我能很快成为那些人中的一员。 :)
-
现在我知道了所有东西的名称,我能够找到the dup。根据该问题产生的点击次数,我认为可以公平地说,子流程模块的文档可以提供更多使用提示,以便为普通 Python 用户提供更轻松的体验。
标签: python python-3.x unicode