2017-08-08 117 views
2

我剛從這裏開始,希望遵循所有規則。 我有一個字典,其鍵值對爲{..., 'CL': 'León', ...},將西班牙地區的縮寫(即'CL')與每個城市(即萊昂)的一個城市相匹配。我包括該行雙字節十六進制值

# _*_ coding: utf-8 _*_ 

在開始,所以我能夠使用utf字符,如tildes。問題是,當我打印出單個數值一切順利的話,輸出正確包括顎化:

print cities['CL'] 

然而,當我打印出整部字典爲:

print cities 

我有雙字節十六進制字符,在這種情況下爲\xc3\xb3

這是爲什麼? 在此先感謝。

+0

有趣的問題我的朋友,結賬https://stackoverflow.com/questions/8288551/how-do-i-display-non-english-characters-in-python –

+1

的可能的複製[我如何顯示在Python中的非英文字符?](https://stackoverflow.com/questions/8288551/how-do-i-display-non-english-characters-in-python) – DyZ

+0

而且這也是:https:// stackoverflow .com/questions/27814363/how-to-write-dict-into-file-with-characters-other-than-english-letters-in-python –

回答

0

對於字節串還有另一個蟒特定編碼:string-escape

>>> d = {'a' : 'тест', 'b': 'тост'} 
>>> print repr(d).decode('string_escape') 
{'a': 'тест', 'b': 'тост'} 

的Python 2 print語句調用它的參數串的轉換。默認情況下,當這個值包含非ASCII字符時,它們會被轉義。

我們可以從repr()獲得此代表從another SO post內置和unescape借用。

然而,如果值是適當的Unicode字符串,用於與u前綴例如字符串常量,其表示和解碼將是不同的。

>>> d = {'a' : u'тест', 'b': u'тост'} 
>>> print d 
{'a': u'\u0442\u0435\u0441\u0442', 'b': u'\u0442\u043e\u0441\u0442'} 
>>> print repr(d).decode("unicode-escape") 
{'a': u'тест', 'b': u'тост'}