В Python 3, предположим, что у меня естьКак закодировать строку Python 3 с помощью u escape-кода?
In[1] thai_string = 'สีเ'
Использование encode
дает
In[2]: thai_string.encode('utf-8')
Out[2]: b'\xe0\xb8\xaa\xe0\xb8\xb5'
Мой вопрос: как я могу получить encode()
вернуть bytes
последовательность, используя \u
вместо \x
? И как я могу вернуть decode
на Python 3 str
?
Я попытался с помощью ascii
встроенной команды, которая дает
In[3]: ascii(thai_string)
Out[3]: "'\\u0e2a\\u0e35'"
Но это, кажется, не совсем верно, так как я не могу расшифровать его обратно, чтобы получить thai_string
.
Python documentation говорит мне, что
\xhh
экранирует символ со значением шестиграннойhh
в то время как\uxxxx
экранирует символ с 16-битного шестнадцатеричного значениемxxxx
В документации говорится, что \u
используется только в строковых литералах, но я не уверен, что это значит. Это намек на то, что мой вопрос имеет ошибочное предположение?
Как насчет '.decode ('utf-8')'? Не являются ли строки в юникоде Python в любом случае? – Zizouz212
@ Zizouz212, ни 'thai_string', ни' ascii (thai_string) 'не имеют метода' decode', а 'thai_string.encode ('utf-8'). Decode ('utf-8')' возвращает меня туда, где я start, 'thai_string', который не является желаемым выходом. –