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

标签 python input unicode python-2.x

我在 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']。额外的 u 来自哪里?

最佳答案

问题的主题行可能有点误导: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 注入(inject)的字符串编码和解码,这在普通的 CPython 中是不存在的。

注意:我自己没有使用过 Codecademy,也不了解其内部工作原理。

关于python - 为什么 Python 2 的 raw_input 输出 unicode 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855896/

相关文章:

html - 单选按钮的不同亮点

javascript - 更简洁的不区分大小写的测验验证

Python 模块在导入语句中存在属性错误,即使导入语句在之前的代码中有效

python - 将用户输入限制为字母

python - 如何查找图表上第 n 个最接近坐标的列表

c++ - 键盘钩子(Hook)仅在调用过程中起作用

Unicode 字符串上的正则表达式是按调试器的预期解释的,而不是按程序的预期解释的

hadoop - 用Unicode表示法解析Hive DDL

python - 如何在 Python 中将代理对转换为普通字符串?

python - 获取随机EOF错误