我尝试使用print命令打印印地文字母,然后我看到这个奇怪的\xe0\
......的东西。但是,如果我不使用打印并使用引号打印它们,那么输出会按预期工作......为什么会这样?
这很好用:
"This is ऋ ॠ ऌ"
然而,对于打印,它不能正常工作:
var = "This is ऋ ॠ ऌ"
print "Again : %r" % var
我得到输出:
Again : This is \xe0\xa4\x8b \xe0\xa5\xa0 \xe0\xa4\x8c'
为什么这样?
注意:
# -*- coding: utf-8 -*-
# is included
答案 0 :(得分:4)
%r
代表repr
,因此它会在您的字符串上调用repr()
...
>>> class Demo:
... def __repr__(self):
... return '(repr called)'
... def __str__(self):
... return '(str called)'
...
>>> d = Demo()
>>> repr(d)
'(repr called)'
>>> str(d)
'(str called)'
>>> '%r %s' % (d, d)
'(repr called) (str called)'
......显然你不想要。请改用%s
:
>>> print '%r' % 'ऋ ॠ ऌ'
'\xe0\xa4\x8b \xe0\xa5\xa0 \xe0\xa4\x8c'
>>> print '%s' % 'ऋ ॠ ऌ'
ऋ ॠ ऌ