为什么Python 2的raw_input输出unicode字符串?

我在Codecademy’s Python lesson上尝试了以下内容

hobbies = []

# Add your code below!
for i in range(3):
    Hobby = str(raw_input("Enter a hobby:"))
    hobbies.append(Hobby)

print hobbies

有了它,它工作正常,但如果相反,我尝试

Hobby = raw_input("Enter a hobby:")

我得到[u’Hobby1′,u’Hobby2′,u’Hobby3′].额外的我们来自哪里?

最佳答案
问题的主题可能有点误导:Python 2的raw_input()通常返回一个字节字符串,而不是Unicode字符串.

但是,如果它或sys.stdin已被更改或替换(由应用程序或作为Python的替代实现的一部分),它可以返回Unicode字符串.

因此,我相信@ByteCommander的评论是正确的:

Maybe this has something to do with the console it’s running in?

Codecademy使用的Python表面上是2.7,但是(a)它是通过使用Emscripten将Python解释器编译为JavaScript并且(b)它在浏览器中运行来实现的;因此,在这些因素之间,Codecademy注入的一些字符串编码和解码很可能在普通CPython中不存在.

注意:我自己没有使用过Codecademy,也没有内部工作的内部知识.

转载注明原文:为什么Python 2的raw_input输出unicode字符串? - 代码日志