在下面的Python2.7shell中,我希望“s.decode('cp437')”和print(s)会给我相同的输出,但是它们不是,这是什么原因呢?在
>>> import sys
>>> sys.stdout.encoding
'cp437'
>>> sys.stdin.encoding
'cp437'
>>>
>>> s = "Flügel"
>>> s
'Fl\x81gel'
>>> s.decode('cp437')
u'Fl\xfcgel'
>>>
>>> print(s)
Flügel
>>>
decode
将返回解码后的值,而不是替换s
。在如果你想改变你的变量
(有趣的是,documentation只是说它解码字符串,而encode documentation声明它返回一个编码字符串)
这不是由
str.decode
引起的。当您在交互式shell中输入一个对象时,它将打印该对象的表示,而不是对象本身。对于某些类型,如整数,它们显示的是相同的:对于其他类型(如字符串),它们显示两种不同的内容:
^{pr2}$与Unicode对象类似:
注意到在字符串和Unicode对象的情况下,对象的表示是实例化它的Python代码,这可能会很有帮助(或令人困惑)。通过使用
datetime.datetime
的演示,这可能会更清楚,它采用了相同的范例:相关问题 更多 >
编程相关推荐