python3处理json文件中含有中文dumps的应用
python3的编码问题一直比较简单
内存中字符串采用unicode
存储到文件中采用utf-8
以下为str,byte互相转换的过程:
str = "abc学习"strOut[6]: 'abc学习'mybyte = str.encode("utf-8")mybyteOut[8]: b'abc\xe5\xad\xa6\xe4\xb9\xa0'str2 = mybyte.decode("utf-8")str2Out[10]: 'abc学习'
最近在写json相关的文件存取,遇到这样的问题:
import jsonjson_str = """{"a": " 1", "f": "100\n", "b": "好好学习"}"""json_strOut[20]: '{"a": " 1", "f": "100\n", "b": "好好学习"}'json_str = json_str.encode('unicode_escape').decode('utf-8')json_strOut[22]: '{"a": " 1", "f": "100\\n", "b": "\\u597d\\u597d\\u5b66\\u4e60"}'json_data = json.loads(json_str, encoding="utf-8")json_dataOut[24]: {'a': ' 1', 'b': '好好学习', 'f': '100\n'}dumps_str = json.dumps(json_data, indent=4)dumps_strOut[26]: '{\n "f": "100\\n",\n "a": " 1",\n "b": "\\u597d\\u597d\\u5b66\\u4e60"\n}'json_data = json.loads(dumps_str)json_dataOut[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_strOut[30]: '{\n "f": "100\\n",\n "a": " 1",\n "b": "好好学习"\n}'
python3处理json文件中含有中文dumps的应用的更多相关文章
- scrapy输出的json文件中显示中文
scrapy用-o filename.json 输出时,会默认使用unicode编码,当内容为中文时,输出的json文件不便于查看,如下图: 可以在setting.py文件中修改默认的输出编码方式,只 ...
- 路径或文件名中含有中文的jar文件双击启动不了 -> Java7的Bug?
至从安装了java7后,才发现部分可执行的jar文件双击都启动不了了. 比如所有的jar文件放在桌面上双击启动不了. 比如所有的文件名中含有中文的jar文件双击启动不了. 比如一个 abc.jar 放 ...
- 第三天,爬取伯乐在线文章代码,编写items.py,保存数据到本地json文件中
一. 爬取http://blog.jobbole.com/all-posts/中的所有文章 1. 编写jobbole.py简单代码 import scrapy from scrapy. ...
- Scrapy基础(十一)————导出数据到json文件中
之前介绍过将数据写入mysql数据库中,但是对于那些没有数据库的,可以通过写入json文件中或者是写入到csv或者xls:这里只介绍写入json文件中,也为再练习一下自定义的pipeline 思路: ...
- JS文件中的中文在网页上显示为乱码解决方法
转自:http://www.pc6.com/infoview/Article_63835.html 如果JS文件中的中文在网页上显示为乱码,不妨采用本文章中的方法来试一试,或许能解决使你很头疼的问题. ...
- ASP.NET Core 在 JSON 文件中配置依赖注入
前言 在上一篇文章中写了如何在MVC中配置全局路由前缀,今天给大家介绍一下如何在在 json 文件中配置依赖注入. 在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等 ...
- 解决Java getResource 路径中含有中文的情况
问题描述 当Java调用getResource方法,但是因为路径中含有中文时,得不到正确的路径 问题分析 编码转换问题 当我们使用ClassLoader的getResource方法获取路径时,获取到的 ...
- package.json文件中dependencies和devDependencies的区别
在工作和学习中,我经常会用的npm 下载各种包,有时就会遇到各种npm 的形式,现在就捋一捋 首先要先了解 package.json文件中dependencies和devDependencies的 ...
- Python3实现从文件中读取指定行的方法
from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...
随机推荐
- 京东轮播图片的静态页面CSS3
效果图: index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...
- 每日英语:China Bond Trading Dives
SHANGHAI—Trading volume in China's bond market has plummeted in recent months, in another reminder o ...
- vim学习笔记(10):vim命令大全
进入vim的命令: vim filename :打开或新建文件,并将光标置于第一行首 vim +n filename :打开文件,并将光标置于第n行首 vim + filename :打开文件,并将光 ...
- 【转】(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration
原创至上,移步请戳:(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration 5.Animation Integration(动画集成) 动画 ...
- 【Linux技术】磁盘的物理组织,深入理解文件系统
磁盘即是硬盘,由许多块盘片(盘面)组成,每个盘片的上下两面都涂有磁粉,磁化后可以存储信息数据.每个盘片的上下两面都安装有磁头,磁头被安装在梳状的可以做直线运动的小车上以便寻道,每个盘面被格式化成有若干 ...
- 在进行vue的学习,项目中需要引入bootstrap、jquery的步骤。
在进行vue的学习,项目中需要引入bootstrap.jquery的步骤. 一.引入jQuery 在当前项目的目录下(就是package.json),运行命令 cnpm install jquery ...
- ThinkPad X220 完美黑苹果 Hackintosh OS X 10.11 El Capitan
原文链接:https://www.gaojinan.com/thinkpad-x220-hackintosh-osx-10-11-el-capitan-perfect.html //Update 20 ...
- html5 class
指向样式表中的类比如<span class="left_menu important">...</span>表示这个span的样式,由样式表中的left_m ...
- jquery开发的数字相加游戏(你能玩几分)
jquery开发的数字相加游戏,我在一轮中玩了632分(如下图),你能玩几分,哈哈... 我要试一试 下面贡献下这款“数字相加游戏”的开发过程. html部分: <div class=" ...
- bootstrapTable刷新当前页码不变和从第一页开始查询
function searchAgencyProject(){ $("#statisticalProjectListTable").bootstrapTable('refresh' ...