python3处理json文件中含有中文dumps的应用

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

内存中字符串采用unicode

存储到文件中采用utf-8

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

str = "abc学习"
str
Out[6]: ‘abc学习‘
mybyte = str.encode("utf-8")
mybyte
Out[8]: b‘abc\xe5\xad\xa6\xe4\xb9\xa0‘
str2 = mybyte.decode("utf-8")
str2
Out[10]: ‘abc学习‘

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

import json
json_str = """{"a": " 1", "f": "100\n", "b": "好好学习"}"""
json_str
Out[20]: ‘{"a": " 1", "f": "100\n", "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\n‘}
dumps_str = json.dumps(json_data, indent=4)
dumps_str
Out[26]: ‘{\n    "f": "100\\n",\n    "a": " 1",\n    "b": "\\u597d\\u597d\\u5b66\\u4e60"\n}‘
json_data = json.loads(dumps_str)
json_data
Out[28]: {‘a‘: ‘ 1‘, ‘b‘: ‘好好学习‘, ‘f‘: ‘100\n‘}

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

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

dumps_str = json.dumps(json_data, ensure_ascii=False, indent=4)
dumps_str
Out[30]: ‘{\n    "f": "100\\n",\n    "a": " 1",\n    "b": "好好学习"\n}‘

时间: 2024-11-07 05:22:17

python3处理json文件中含有中文dumps的应用的相关文章

Java 对zip文件中含有中文子文件操作

小鱼仔做文件压缩解压的时候,开始并没有注意细节,使用的java jdk中zip操作工具类 这样导致的问题是对中文操作都是乱码,要么就是破损. 查阅资料才知道这个实在1.6的历史遗留问题 还好开源的apache 提供了一个支持包,让我们拿过来就可以用. 下面是下载链接 提供jar包下载链接:http://download.csdn.net/detail/u010962482/8748091 废话不多说 贴上解压压缩代码. /** * 解压文件到指定目录 * @param zipFile * @pa

路径或文件名中含有中文的jar文件双击启动不了 -> Java7的Bug?

至从安装了java7后,才发现部分可执行的jar文件双击都启动不了了. 比如所有的jar文件放在桌面上双击启动不了. 比如所有的文件名中含有中文的jar文件双击启动不了. 比如一个 abc.jar 放在c:\下可以双击启动,但移动到桌面上,双击启动不了了. 比如一个放在c:\下的abc.jar可以双击启动,如果移动到c:\我的jar文件夹\abc.jar 双击启动不了了. 以前在java6下好像没出现这样的事情... 2011-10-13

解决Java工程路径中含有中文的情况

问题: 当Java工程路径中含有中文时,得不到正确的路径 *** 解决: 这其实是编码转换的问题.当我们使用ClassLoader的getResource方法获取路径时,获取到的路径被URLEncoder.encode(path,"utf-8")编码了,当路径中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要的真实路径,所以我们可以调用URLDecoder.decode()方法进行解码,以便得到原始的中文及空格路径. Java代码 : String package

php 如何把中文写入json中 当json文件中还显示的是中文

/*** * 更新版本 */ function showupversionsub(){ #接受post 过来的数据 $app_type=$_POST['aap_type']; if($app_type=='android'||$app_type=='ios'||$app_type=='windows'){ #组成数组 $arr=array( mainVer=>$_POST['mainVer']==null? '':$_POST['mainVer'], upVer=>$_POST['upVer'

Python3之json文件操作

json函数 使用json函数之前,首先需要导入json模块,import json 1).json.dumps()函数 该函数是将 Python 对象编码成 JSON 字符串,例如: 1 import json 2 d={'谦谦':{'sex':'男','addr':'北京','age':34},'千千':{ 'sex':'女','addr':'北京', 'age':34},} 3 print(json.dumps(d,ensure_ascii=False,indent=4)) #字典转成js

如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码

首先我们必须明确一点,为什么正常转换会乱码? 因为我们的数据写入是GBK写入的,然后展示的话是按照文件保存形势展示的,前面保存形势是GBK,一致,所以不乱码,而后面将保存形势变成了UTF-8,但是写入的内容是GBK形势的,编码解码方式不一致,所以产生乱码. 我们一般的解决乱码的思路是: String s=new String(str.getBytes("GBK"),"UTF-8"); 我将它解决的思路也是这样子的: 首先我们知道引起乱码的只是因为中文,中文乱码的方式

C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法

这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错, json字符格式如下 { "BOXINFO":[ { "ITEM_ID":"100201709153277", "ITEM_NAME":"抗链球菌溶血素"O"(ASO)测定试剂盒(胶乳免)", "QTY":6, "NOTES":"厂牌(河北恒利集团

python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中

# coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.setdefaultencoding('utf-8') class dataBean(object) : def __init__(self, title, url,date): self.date = date self.url = url self.title = title def obj_2_

取出csv文件中的中文评论数据

# -*- coding: utf-8 -*- import csv import re csvfile = 'weibo.csv' def columns_data(path, column): columns_data = '' csvfile = open(path, 'r', encoding='utf-8') DicReader = csv.DictReader(csvfile) for row in DicReader: columns_data = columns_data+row