2013-03-11 32 views
0

我有一個文件,該文件很簡單:基本的Python編碼

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

a = u'Alegría' 
print a 
print {'a': a} 

輸出是:

Alegría 
{'a': u'Alegr\xeda'} 

爲什麼我得到的是不是:提前

Alegría 
{'a': u'Alegría'} 

謝謝

+0

打印字典使用'repr'而不是僅僅打印字符串的原始內容。 – Ryan 2013-03-11 23:37:26

回答

6

dict's string r epresentation在鍵和值上調用repr,並且repr儘可能地創建一個字符串表示形式,您可以將其粘貼到任何文件或解釋器中,或者聲明一個編碼,然後獲取對象。

你的字符串很好,它只是一個安全表示。

+0

我試圖通過將它序列化到JSON來將它打印到文件中。我想JSON的工作方式與repr類似,因爲我得到了印在文件上的醜陋的{'a':u'Alegr \ xeda'}。你會知道如何將它序列化爲{'a':u'Alegría'}嗎?謝謝 編輯:我想我找到了答案:http://stackoverflow.com/questions/4184108/python-json-dumps-cant-handle-utf-8 – Alex 2013-03-11 23:57:18

+0

JSON不應該包含非ASCII字符,並且字符串python dicts的表示不是有效的JSON。一個帶有'a'和值'Alegría'的JSON對象如下所示:'{「a」:「Alegr \ u00eda」}'。爲什麼你關心的是序列化格式是什麼樣的?你一端是'json.dump',另一端是'json.load',並得到你想要的東西。 – 2013-03-12 00:01:31

+0

我想將字典轉儲到一個文件,然後手工編輯並最終用JavaScript加載。 將它很好地打印在JSON文件中,所以我可以很容易地編輯它,因爲它更具可讀性。 – Alex 2013-03-12 00:11:58