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": "好好学习"
    }'
  • 相关阅读:
    随笔
    std::condition_variable(复习)
    随笔
    std::vector<std::vector<> >
    staitc_cast,const_cast....
    复制构造函数
    c++ 临时对象
    复制初始化和直接初始化
    随笔
    Fedora 安装oracle11g 之最简洁方式
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/7985834.html
Copyright © 2011-2022 走看看