Python print unicode strings in arrays as characters, not code points

Question:

If I’ve got a dictionary of the form:

a = {u"foo": u"ბარ"}

and I write

>>> print a[u"foo"]

I get

ბარ

as expected. But if I write

>>> print a

I get

{u'foo': u'u10d1u10d0u10e0'}, but I would prefer the characters themselves to be printed.

All the data will ultimately get dumped into a database anyway, so it’s not critical to solve this problem, but for debugging it would be nice if I could get readable output when I print the entire dictionary. Is there any way to do this?

For those who are curious, the script is Georgian, and yes, it says “bar”.

Asked By: Chrest

||

Answers:

This works in my terminal:

print repr(a).decode("unicode-escape")
Answered By: Thomas K

Thomas answer is absolutely correct. I just want to add this line for everyone who wants a more readable output:

print json.dumps(a, indent=4, default=str).decode('unicode-escape')
Answered By: Feanor
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.