Reputation: 8047
I have to work with Unicode (cyrillic) characters in IPython Notebook. Are there any way to output strings in Unicode, not their unicode or utf8 codes? I'd like to have ["АБ","ВГ"]
as output in the last two examples below.
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']
Upvotes: 8
Views: 13826
Reputation: 401
In Python 2 (with or without IPython), you can use the unicode_escape
string codec to mimic proper Unicode repr
s:
In [1]: print repr([u"АБ",u"ВГ"]).decode('unicode_escape')
[u'АБ', u'ВГ']
https://docs.python.org/2/library/codecs.html#python-specific-encodings
Unlike Mark Ransom's solution, this works for most common data types (including e.g. dictionaries). Note that this prevents IPython's nice formatting of large data structures, though.
Upvotes: 5
Reputation: 8047
You have to switch to Python 3 and get nice repr
's of Unicode strings.
Upvotes: 3
Reputation: 308101
Don't print out a whole list, print out each element of the list separately. Or convert the list to a string:
print u'[' + u','.join(string_list) + u']'
Upvotes: 1