我必须在IPython Notebook中使用Unicode(西里尔文)字符。有没有办法用Unicode输出字符串,而不是unicode或utf8代码?我想在下面的最后两个例子中输出["АБ","ВГ"]
。
In [62]: "АБВ"
Out[62]: '\xd0\x90\xd0\x91\xd0\x92'
In [63]: u"АБВ"
Out[63]: u'\u0410\u0411\u0412'
In [64]: print "АБВ"
АБВ
In [65]: print u"АБВ"
АБВ
In [66]: print ["АБ","ВГ"]
['\xd0\x90\xd0\x91', '\xd0\x92\xd0\x93']
In [67]: print [u"АБ",u"ВГ"]
[u'\u0410\u0411', u'\u0412\u0413']
答案 0 :(得分:5)
在Python 2中(使用或不使用IPython),您可以使用unicode_escape
字符串编解码器来模拟正确的Unicode repr
:
In [1]: print repr([u"АБ",u"ВГ"]).decode('unicode_escape')
[u'АБ', u'ВГ']
https://docs.python.org/2/library/codecs.html#python-specific-encodings
与Mark Ransom的解决方案不同,这适用于大多数常见数据类型(包括例如字典)。请注意,这可以防止IPython很好地格式化大型数据结构。
答案 1 :(得分:3)
你必须切换到Python 3并获得很好的repr
的Unicode字符串。
答案 2 :(得分:1)
不要打印出整个列表,分别打印出列表中的每个元素。或者将列表转换为字符串:
print u'[' + u','.join(string_list) + u']'