2013-03-11 45 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