python json转换为dict的编码问题_python中json和字符编码的转换
json是用来转换python object 和json format 的,字符编码有gb2312,gb18030/gbk,utf-8等。
在 Python 中出现的 str 都是用字符集编码的 ansi 字符串。Python 本身并不知道 str 的编码,需要由开发者指定正确的字符集 decode。
因为 Python 认为 16 位的 unicode 才是字符的唯一内码,而大家常用的字符集如 gb2312,gb18030/gbk,utf-8,以及 ascii 都是字符的二进制(字节)编码形式。把字符从 unicode 转换成二进制编码,当然是要 encode。
# 从 str 转换成 unicode
prints.decode('utf-8')
# 从 unicode 转换成 str
printu.encode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None,separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
Serialize obj as a JSON formatted stream to fp (a .write()-supporting file-like object) using this conversion table.
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None,separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
Serialize obj to a JSON formatted str using this conversion table. If ensure_ascii is false, the result may contain non-ASCII characters and the return value may be a unicode instance.
json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[,**kw]]]]]]]])
Deserialize fp (a .read()-supporting file-like object containing a JSON document) to a Python object using thisconversion table.
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[,**kw]]]]]]]])
Deserialize s (a str or unicode instance containing a JSON document) to a Python object using this conversion table.
json有上面四种function,注意带s和不带s的区别,json.dumps是把python object转换为json format,反之,json.loads是把json str 转换为python object。
python object 有dict , list 等。
下面给出输出一个大的json字符串到文件,并以可读的格式输出。
#!/usr/bin/env python
import urllib2
import json
import sys
url = 'world.taobao.com/search/json.htm'
url = 'http://' + url
keyword = sys.argv[1]
url = url + '?q=' + keyword
print url
request = urllib2.Request(url)
response = urllib2.urlopen(request)
content = response.read()
if isinstance(content, basestring):
print "content is string"
else:
print "content is not string"
content = json.loads(content, encoding='gbk')
content = json.dumps(content, encoding='gbk', ensure_ascii=False, indent=4, separators=(',', ': '))
content = content.encode('utf-8')
file = keyword
f = open(file, 'w')
f.write(content)
f.close()
python json转换为dict的编码问题_python中json和字符编码的转换相关推荐
- python怎么换行输出的数字对齐_python中格式化输出和字母大小写转换,对齐填充方式...
#格式化输出 print("ang is a good time") str7="ong is a boy" num=10 f=5.22313 # %d(整数站 ...
- 解决Python3中的中文字符编码的问题-亲测有效
解决Python3中的中文字符编码的问题 一.原理篇: Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等.这篇文章主要介绍了Python3中的解决中文字符编 ...
- python3中默认的字符编码和文件编码_python3 unicod,utf-8,gbk的编码和解码中文显示问题...
目的: 清楚了解为什么在python3不同的编码,解码,windows,linux操作系统下,字符是否能够正确显示. 前提: 了解不同编码用不同的二级制编码和长度来表示字符. 在python3中,各种 ...
- [转载]Java web应用中的常见字符编码问题的解决方法
以下是 Java web应用的常见编码问题 1. html页面的编码 在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Co ...
- Java中的字符集编码入门Java中的增补字符
转载自:http://jiangzhengjun.iteye.com/blog/512083 Java中的字符集编码入门Java中的增补字符 博客分类: 字符集编码 Java Java号称对Unico ...
- python在json文件中查找指定数据_Python中json的取值 如何使用python提取json中指定字段的数据...
python中为什么用json有什么作用 如何用python读取json里面的值啊我爱你,所以我给了你伤害我的权力,只要我能忍受,我会一直陪伴着你,但你不能伤害我太多. 数据如下,我想要读取name. ...
- json和python中字典的区别和联系_Python 中json与字典的关系
Python开发中字典和 json的概念区别: json.dumps( dict ) 字典变为字符 json.loads( jsoninput ) 字符变为字典 一.字典 字典是一种数据结构,而jso ...
- python json模块有什么用_Python中json模块与jsonpath模块的区别是什么
Python中json模块与jsonpath模块的区别是什么 发布时间:2021-02-02 11:15:52 来源:亿速云 阅读:94 作者:小新 这篇文章主要介绍了Python中json模块与js ...
- python中字符编码使用_python中字符编码是什么?如何转换字符?
屏幕前我们看到的文字,在计算机中也是这样表示吗?事实上,我们所有的信息电脑是无法直接理解的,同样我们所要表达的信息,计算机也不能看懂.这就需要架起一个理解的桥梁,也就是编码帮助我们相互之间进行翻译.今 ...
- python post json 解析失败_python中json对象转换出错解决方法
今天在使用python中的json转换碰到一个问题: 接收一个post的json字符串: s={"username":"admin","passwor ...
最新文章
- 【java】第一阶段基础知识整理
- java用eclipse怎么把main快点打出来
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题...
- php swiper 下拉刷新,SwipeRefreshLayout的使用(下拉刷新)
- K8S部署Kuboard V3
- 海康威视Web端视频开发
- 问题:jquery event.which详解
- 2018云+未来峰会圆桌面对面:以网络安全之能,造国之重器
- 《妈妈是孩子最好的老师》读后感
- 用matlab编程怎么做,Matlab教程 Matlab入门图文教程
- 打开shp文件最直接的思路
- 从0开始,html5零基础入门教程,快来看看!
- 聊聊Linux2038年问题
- Oracle基本知识点总结
- 网络流量分析工具(tcpdump)
- java bouncycastle_BouncyCastle
- PS和AE结合设计的进度条,有图有视频(秒懂)
- Linux下定时删除指定目下n天前的文件
- 七麦研究院首发AR产品数据报告,数读App Store上的AR世界
- tomcat tomcat配置 项目部署tomcat三种方式