декодирование строковых переменных юникода в Python - PullRequest
0 голосов
/ 04 декабря 2018

Я использую API в Python v2.7 для получения строки, содержание которой неизвестно.Содержание может быть на английском, немецком или французском языке.Имя переменной, присваиваемой возвращаемой строке, равно «category».Примером возвращаемого значения для категории переменных является: -

"temp\\u00eate de poussi\\u00e8res"

Я попытался category.decode('utf-8') декодировать строку в, в приведенном выше случае, французском языке, но, к сожалению, он все еще возвращает то же значение,с дополнительным юникодом 'u' в начале, когда я печатаю результат category.decode('utf-8').

u'"temp\\u00eate de poussi\\u00e8res'

Я также пытался category.encode('utf-8'), но он возвращает то же значение (минус «u», которое предшествует строке: -

'"temp\\u00eate de poussi\\u00e8res"'

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Похоже, API использует JSON.Вы можете декодировать его с помощью модуля json:

>>> import json
>>> json.loads('"temp\\u00eate de poussi\\u00e8res"')
u'temp\xeate de poussi\xe8res'
>>> print(json.loads('"temp\\u00eate de poussi\\u00e8res"'))
tempête de poussières
0 голосов
/ 04 декабря 2018

Я думаю, что в вашей строке есть косые черты, а не символы Юникода.

То есть \u00ea - это escape-кодировка Unicode для ê, но \\u00ea на самом деле является косой чертой (экранированная), два нуля и две буквы.

Аналогично для кавычек, ваши первые и последние символы - это буквальные двойные кавычки ".

Вы можете преобразовать эти косая черта плюс кодовая точка в эквивалентные им символы:

x = '"temp\\u00eate de poussi\\u00e8res"'
d = x.decode("unicode_escape")
print d

Вывод:

"tempête de poussières"

Обратите внимание, что для просмотра правильных международных символов необходимо использовать печать.Если вместо этого вы просто напишите d в интерактивной оболочке Python, вы получите:

 u'"temp\xeate de poussi\xe8res"'

, где \xea эквивалентно \u00ea, то есть escape-последовательности для ê.

Удаление цитат, если необходимо, оставлено читателю в качестве упражнения; -).

...