print '中国' #输出:中国
print ['中国'] #输出:['\xd6\xd0\xb9\xfa']
print {'中国':'中国'} #输出: {'\xd6\xd0\xb9\xfa': '\xd6\xd0\xb9\xfa'}
请问一下为什么在list和dict打印出来是转义字符?
print '中国' #输出:中国
print ['中国'] #输出:['\xd6\xd0\xb9\xfa']
print {'中国':'中国'} #输出: {'\xd6\xd0\xb9\xfa': '\xd6\xd0\xb9\xfa'}
请问一下为什么在list和dict打印出来是转义字符?
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
这是 Python 2 特别讨厌的一点,以至于我实在忍受不了写了个 repl_py27 来绕过该问题。不过最终还是迁移到 Python 3 啦 =w=
Python 2 的世界是个 ASCII 的世界,unicode 是后来加的,所以使用
repr
显示的时候是把所有非 ASCII 的字符转义显示的。你要直接把字符串写出来的话,Python 2 就不会进行任何转义了,于是在支持的终端上,中文就能正常显示了。注意 @socrates 说的是错的。print 遇到非字符串时,会调用
str()
函数将对象转成字符串再输出:而很多对象的
__str__
方法是没有定义的,于是str()
函数改调用它的__repr__
方法。又:Python 2 的字符串和 unicode 的
str()
输出都是经过转义的。这也是我讨厌 Python 2 的另一个重要原因: