5 python utf-8 character-encoding codepages gbk
我的代码看起来像:
# -*- coding: utf-8 -*-
print ["asdf", "??"]
print ["??"]
print "??"
Run Code Online (Sandbox Code Playgroud)
Eclipse控制台中的输出非常奇怪:
['asdf', '\xe4\xb8\xad\xe6\x96\x87']
['\xe4\xb8\xad\xe6\x96\x87']
??
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是:为什么最后一行得到正确的输出,而其他的没有?
我的第二个问题是:如何纠正错误的(使它们输出真实的字符而不是以"x"开头的代码)?
感谢你们!!
为什么最后一行得到正确的输出,而其他人没有?
当你print foo,打印出来的是str(foo).
但是,如果foo是a list,则str(foo)使用repr(bar)每个元素bar,而不是str(bar).
该str字符串的是它本身; 该repr字符串是引号内的字符串,并且逃脱.
我该如何纠正错误的
如果要打印a中str的每个元素,list则必须明确地执行此操作.例如:
print '[' + ', '.join(["asdf", "??"]) + ']'
Run Code Online (Sandbox Code Playgroud)
有一些零星的提议要改变这种行为,所以str在一个序列上调用str它的成员.PEP 3140是被拒绝的提案.2009年的这个主题解释了拒绝它的设计理由.
但主要是,要么这些不打印相同的东西:
a = 'foo, bar'
b = 'foo'
c = 'bar'
print [a]
print [b, c]
Run Code Online (Sandbox Code Playgroud)
或者,解释Ned Batchelder:repr永远是极客; str尽可能用于人类,但是用括号和逗号打印列表已经是极客.