Как напечатать правильный символ из Unicode, как "\\ u201c u \\ u201d 东风" в Python 3? - PullRequest
0 голосов
/ 21 апреля 2019
# coding=utf-8
import codecs

str_unicode = "\\u201c借\\u201d东风"
str_bytes = codecs.decode(str_unicode, 'unicode-escape')
print(str_bytes)

это печатает «å» ä¸é £ на консоли.

Ответы [ 3 ]

1 голос
/ 21 апреля 2019

Франциско Кузо правильно описывает вашу проблему. Если у вас есть контроль над строкой, вам следует избегать экранирования символов кавычки в вашей строке Unicode. Но я предполагаю, что вы на самом деле сами не писали эту строку как литерал, а скорее получили ее из внешнего источника (например, из файла).

Если в вашей строке Unicode уже есть дополнительные escape-символы, вы можете исправить проблему, сначала кодируя свои данные (используя str.encode), затем удаляя дополнительные обратные слэши из уже закодированных символов, а затем, наконец, снова декодируйте:

str_unicode = "\\u201c借\\u201d东风"  # or somefile.read(), or whatever

fixed = str_unicode.encode('unicode-escape').replace(b'\\\\', b'\\').decode('unicode-escape')

print(fixed)  # prints “借”东风
1 голос
/ 21 апреля 2019

Вы неправильно экранируете символы, у вас есть дополнительные \:

>>> print("\u201c借\u201d东风")
“借”东风
0 голосов
/ 21 апреля 2019

Стандарт Unicode содержит множество таблиц, в которых перечислены символы и соответствующие им кодовые точки:

0061    'a'; LATIN SMALL LETTER A
0062    'b'; LATIN SMALL LETTER B
0063    'c'; LATIN SMALL LETTER C
...
007B    '{'; LEFT CURLY BRACKET
...
2167    'Ⅶ': ROMAN NUMERAL EIGHT
2168    'Ⅸ': ROMAN NUMERAL NINE
...
265E    '♞': BLACK CHESS KNIGHT
265F    '♟': BLACK CHESS PAWN
...
1F600   '?': GRINNING FACE
1F609   '?': WINKING FACE
...

Вы можете найти здесь документацию по Python 3 по этой ссылке Unicode Python 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...