簡體   English   中英

在Python中解碼unicode字符串變量

[英]decoding unicode string variables in Python

我在Python v2.7中使用API​​來獲取字符串,其內容未知。 內容可以是英語,德語或法語。 分配給返回字符串的變量名稱是“category”。 變量類別的返回值的示例是: -

"temp\\u00eate de poussi\\u00e8res"

我已經嘗試使用category.decode('utf-8')將字符串解碼為,在上面的例子中,是法語,但不幸的是它仍然返回相同的值,當我打印結果時,在開頭有一個額外的unicode'u' category.decode('utf-8')

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

我也嘗試了category.encode('utf-8')但它返回相同的值(減去字符串前面的'u': -

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

有什么建議么?

我認為你的字符串中有字面斜杠,而不是unicode字符。

也就是說, ê的unicode轉義編碼,但\\\ê實際上是一個斜線(轉義),兩個零和兩個字母。

與引號類似,您的第一個和最后一個字符是字面雙引號"

您可以將這些斜杠加代碼點轉換為等效字符:

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

輸出是:

"tempête de poussières"

請注意,要查看正確的國際字符,您必須使用print。 如果你只是在交互式Python shell中編寫d ,你得到:

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

其中\\xea等同於 ,這是ê的轉義序列。

如果需要,刪除引號留給讀者作為練習;-)。

看起來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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM