zoukankan      html  css  js  c++  java
  • python3处理json文件中含有中文dumps的应用

    python3的编码问题一直比较简单

    内存中字符串采用unicode

    存储到文件中采用utf-8

    以下为str,byte互相转换的过程:

    str = "abc学习"
    str
    Out[6]: 'abc学习'
    mybyte = str.encode("utf-8")
    mybyte
    Out[8]: b'abcxe5xadxa6xe4xb9xa0'
    str2 = mybyte.decode("utf-8")
    str2
    Out[10]: 'abc学习'

    最近在写json相关的文件存取,遇到这样的问题:

    import json
    json_str = """{"a": " 1", "f": "100
    ", "b": "好好学习"}"""
    json_str
    Out[20]: '{"a": " 1", "f": "100
    ", "b": "好好学习"}'
    json_str = json_str.encode('unicode_escape').decode('utf-8')
    json_str
    Out[22]: '{"a": " 1", "f": "100\n", "b": "\u597d\u597d\u5b66\u4e60"}'
    json_data = json.loads(json_str, encoding="utf-8")
    json_data
    Out[24]: {'a': ' 1', 'b': '好好学习', 'f': '100
    '}
    dumps_str = json.dumps(json_data, indent=4)
    dumps_str
    Out[26]: '{
        "f": "100\n",
        "a": " 1",
        "b": "\u597d\u597d\u5b66\u4e60"
    }'
    json_data = json.loads(dumps_str)
    json_data
    Out[28]: {'a': ' 1', 'b': '好好学习', 'f': '100
    '}

    从上面的事例看出,通过string转成json后,再通过json.dumps转成字符串后,原先的好好学习变成了中文编码,存储到文件中也是中文编码,很不直观。

    经过摸索,采用如下方法即可使得dumps转成中文(ensure_ascii=False)

    dumps_str = json.dumps(json_data, ensure_ascii=False, indent=4)
    dumps_str
    Out[30]: '{
        "f": "100\n",
        "a": " 1",
        "b": "好好学习"
    }'
  • 相关阅读:
    剑指Offer_编程题_从尾到头打印链表
    剑指Offer_编程题_替换空格
    剑指Offer_编程题_二维数组中的查找
    我用java爬虫爬了一个图片网站
    docker安装mysql5.7
    设计模式和设计原则
    nginx 限流配置
    JAVA性能监控与调优参考文档链接
    单例模式
    Java开发中对Redis的基本操作
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/7985834.html
Copyright © 2011-2022 走看看