Как преобразовать код% uXXXX в обычный текст в Python? - PullRequest
2 голосов
/ 19 сентября 2019

У меня есть строка типа '% u0E1E% u0E1A% u0E40% u0E08% u0E2D% u0E02% u0E27% u0E14% u0E40', которую я хочу преобразовать в простой текст 'พบ เจอ' Я пытался использовать функции ord () и chr ()как:

TypeError                                 Traceback (most recent call last)
<ipython-input-104-5ab6fb196276> in <module>
      1 for i in range(1,len(split_list)):
----> 2     split_list[i] = chr(ord(u''+split_list[i]))

TypeError: ord() expected a character, but string of length 6 found

Пожалуйста, помогите мне решить эту проблему Спасибо заранее.

1 Ответ

0 голосов
/ 19 сентября 2019

Похоже, у вас есть строка, в которой представление с обратной косой чертой, обычно используемое для представления символов, отличных от ascii, было заменено соглашением, основанным на знаках процента.

Решение состоит в том, чтобы заменить знаки прецента на обратную косую черту - каквы пробовали - затем кодируйте в байты и декодируйте кодек unicode-escape .Результатом будет Python str.

>>> s = '%u0E1E%u0E1A%u0E40%u0E08%u0E2D%u0E02%u0E27%u0E14%u0E40'
>>> # Encode to latin-1 as it won't lose any information.
>>> result = s.replace('%', '\\').encode('latin-1').decode('unicode-escape')
>>> result
'พบเจอขวดเ'
>>> # Result is longer than we expected
>>> expected = 'พบเจอ' 
>>> result == expected
False
>>> expected in result
True
>>> result.startswith(expected)
True
...