python 字典中有中文写入文件后变成编码

发布于 2022-09-02 00:27:01 字数 333 浏览 22 评论 0

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}]
如何让中文写入文件后依然是中文呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

深白境迁sunset 2022-09-09 00:27:01

你需要借助于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}]
总攻大人 2022-09-09 00:27:01

修改你操作系统的文件编码

So要识趣 2022-09-09 00:27:01

其实你在第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编码的字符串的结果。

你尝试调整你虚拟终端的显示编码看看

时光磨忆 2022-09-09 00:27:01

import sys
sys.setdefaultencoding("utf-8")
a = [{'name': u'北京', 'zone': 10}, {'name': u'重庆', 'zone': 20}]

这样试试看。

夜血缘 2022-09-09 00:27:01

不能直接写呀,你需要dump你的字典,看楼上的json方案

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文