问题描述
我正在处理一些德语文本数据。我试图将一些元数据保存到python中的JSON文件中。
这是元数据的样子(您可能会注意到,有ä,ö字符):
{'pages': ['kitchwitch.ch_posts.csv','Sujetbaizinbasel_posts.csv','Guggenmusik-Moore-Schränzer-149777592206118_posts.csv','zueundrichproductions_posts.csv','glueckshof_posts.csv','Lieberockt_posts.csv','Pfadi-Schöftle-699078857125683_posts.csv'...
with open('./gsw_fb_r1_Metadata.json','w',encoding='utf8' )as f:
json.dump(Metadata,f)
但是当我用Sublime Text3打开它时,得到以下信息:
{"pages": ["kitchwitch.ch_posts.csv","Sujetbaizinbasel_posts.csv","Guggenmusik-Moore-Schra\u0308nzer-149777592206118_posts.csv","zueundrichproductions_posts.csv","glueckshof_posts.csv","Lieberockt_posts.csv","Pfadi-Sch\u00f6ftle-699078857125683_posts.csv",
因此,ö和ä不能正确显示。如何像在Python中一样正常显示它们?这个问题与Sublime Text或我有关吗?谢谢!
解决方法
那是有效的JSON。默认设置是仅使用ASCII和Unicode转义码写入数据。当您使用json.load()
将JSON重新加载到Python中时,字符串将再次包含原始字符。
如果您希望JSON文本文件可读而不是使用转义码,则可以使用ensure_ascii=False
:
with open('./gsw_fb_r1_metadata.json','w',encoding='utf8' )as f:
json.dump(metadata,f,ensure_ascii=False)
这会将数据以UTF-8格式写入文件,并在具有UTF-8功能的文本编辑器中可读。