http://docs.python.org/py3k/library/functions.html#ascii
В качестве repr () возвращает строку, содержащую печатаемое представление объекта, но экранирует не-ASCII-символы в строке, возвращаемой repr (), используя escape-символы \ x, \ u или \ U. Это генерирует строку, аналогичную той, которая возвращается repr () в Python 2.
И полученная строка действительно будет иметь тип str
, а не bytes
.
Пример:
>>> a = '''Ⴊ ⇠ ਐ ῼ இ ╁ ଠ ୭ ⅙ ㈣'''
>>> ascii(a)
"'\\u10aa \\u21e0 \\u0a10 \\u1ffc \\u0b87 \\u2541 \\u0b20 \\u0b6d \\u2159 \\u3223'"
>>> print(ascii(a))
'\u10aa \u21e0 \u0a10 \u1ffc \u0b87 \u2541 \u0b20 \u0b6d \u2159 \u3223'
А если вы хотите обрезать лишние кавычки, вы можете просто сделать print(ascii(a)[1:-1])
.
РЕДАКТИРОВАТЬ: Как утверждает Алекс, вам придется использовать repr
в Python 2.6 вместо ascii
. Его решение действительно работает как для Python 2, так и для 3, но если вы планируете многократно выполнять преобразование (и, следовательно, предпочли бы что-то более простое набирать несколько раз), одна из возможностей состоит в том, чтобы поставить условие в начале вашей программы следующим :
import sys
if sys.version_info[0] == 3:
unic = ascii
else:
unic = repr
И затем вы просто используете unic
(или как хотите, чтобы его называть) везде, где бы вы использовали repr
в Python 2 и ascii
в Python 3.
... Хотя я полагаю, вы могли бы использовать elif sys.version_info[0] == 2:
вместо else:
, если хотите быть немного осторожнее.