为什么Python 2的raw_input输出unicode字符串?
问题内容:
我在Codecademy的Python课上尝试了以下内容
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']
。多余u
的来自哪里?
问题答案:
问题的主题行可能会引起误解:Python
2raw_input()
通常返回字节字符串,而不是Unicode字符串。
但是,如果它被更改或替换(由应用程序或作为Python的替代实现的一部分),它 可能 返回Unicode字符串sys.stdin
。
因此,我相信@ByteCommander的评论正确无误:
也许这与其运行的控制台有关?
表面上,Codecademy使用的Python是2.7,但(a)通过使用Emscripten将Python解释器编译为JavaScript来实现的;(b)它在浏览器中运行;因此,在这些因素之间,很可能是Codecademy注入了一些普通的CPython中不存在的字符串编码和解码。
注意:我自己没有使用Codecademy,也没有任何内部了解其内部工作原理。