Python中将字典写入到文本中,中文显示(Unicode)的解决方法

最近需要处理一大批的数据,需要将字典格式的标记文本写入文件,转换完成后发现,字典中的中文全都变成了Unicode编码显示

显示Unicode编码的转换方式

import json
data = {
        "name": "张三",
        "age": 20
    }
fp = open('data.json', 'w', encoding='utf-8')
json_str = json.dumps(data)
fp.write(f'{json_str}')
fp.close()
# 结果如下
{"name": "\u5f20\u4e09", "age": 20}
  • json.dumps 序列化时默认使用的是ascii编码,想输出中文需要指定参数ensure_ascii=False

正确的转换方式

import json
data = {
        "name": "张三",
        "age": 20
    }
fp = open('data.json', 'w', encoding='utf-8')
json_str = json.dumps(data, ensure_ascii=False)
fp.write(f'{json_str}')
fp.close()
# 结果如下
{"name": "张三", "age": 20}
  • 如果想格式化只需要增加一个参数indent=4
import json
data = {
        "name": "张三",
        "age": 20,
    }
fp = open('data.json', 'w', encoding='utf-8')
json_str = json.dumps(data, ensure_ascii=False, indent=4)
fp.write(f'{json_str}')
fp.close()
# 结果如下
{
    "name": "张三",
    "age": 20
}

注:

  • 如果觉得使用 fp = open('data.json', 'w', encoding='utf-8') 这种方式麻烦可以使用 with open('data.json', 'w', encoding='utf-8') as fp:
import json
data = {
        "name": "张三",
        "age": 20
    }
with open('data.json', 'w', encoding='utf-8') as fp:
  json.dump(res_str, fp, ensure_ascii=False, indent=4)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 引言 在使用Python的时候,最令人崩溃,同时也是最常见的错误信息之一,就是处理字符串时出现的UnicodeEr...
    耀凯考前突击大师阅读 4,075评论 0 3
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,347评论 4 16
  • datetime是Python处理日期和时间的标准库。 获取当前日期和时间 我们先看如何获取当前日期和时间: >>...
    jbb_43b0阅读 1,140评论 0 0
  • 基础语法 Python 是一门高阶、动态类型的多范式编程语言;定义 Python 文件的时候我们往往会先声明文件编...
    Java丶python攻城狮阅读 430评论 0 0
  • 一、python入门 1. python介绍 1.1 python可运用范围 1.1.1 脚本、小工具 1.1.2...
    三观正_1e5f阅读 1,428评论 0 10

友情链接更多精彩内容