coding:utf-8
import codecs
fp = codecs.open('test.txt', 'w', 'UTF-8')
a = [{'name': '北京', 'zone': 10}, {'name': '重庆', 'zone': 20}]
fp.write(str(a))
fp.close()
cat test.txt
[{'name': '\xe5\x8c\x97\xe4\xba\xac', 'zone': 10}, {'name': '\xe9\x87\x8d\xe5\xba\x86', 'zone': 20}]
如何让中文写入文件后依然是中文呢?
import sys
sys.setdefaultencoding("utf-8")
a = [{'name': u'北京', 'zone': 10}, {'name': u'重庆', 'zone': 20}]
这样试试看。
修改你操作系统的文件编码
其实你在第3行后,保存的就是cat后的结果,如下:
import codecs
fp = codecs.open('test.txt', 'w', 'UTF-8')
a = [{'name': '北京', 'zone': 10}, {'name': '重庆', 'zone': 20}]
print a
'\xe5\x8c\x97\xe4\xba\xac',控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。
你尝试调整你虚拟终端的显示编码看看
你需要借助于python的json模块处理数据的dump操作;
#!/usr/bin/python
# encoding:utf-8
import json
def dump(lst):
fp = open("lst.utf8", "w")
fp.write(json.dumps(lst, ensure_ascii=False))
fp.close()
if __name__ == '__main__':
dump([{'name': '北京', 'zone': 10}, {'name': '重庆', 'zone': 20}])
结果如下:
λ ~/ python demo.py
λ ~/ cat lst.utf8
[{"name": "北京", "zone": 10}, {"name": "重庆", "zone": 20}]
不能直接写呀,你需要dump你的字典,看楼上的json方案