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和字符编码的转换相关推荐

  1. python怎么换行输出的数字对齐_python中格式化输出和字母大小写转换,对齐填充方式...

    #格式化输出 print("ang is a good time") str7="ong is a boy" num=10 f=5.22313 # %d(整数站 ...

  2. 解决Python3中的中文字符编码的问题-亲测有效

    解决Python3中的中文字符编码的问题 一.原理篇: Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等.这篇文章主要介绍了Python3中的解决中文字符编 ...

  3. python3中默认的字符编码和文件编码_python3 unicod,utf-8,gbk的编码和解码中文显示问题...

    目的: 清楚了解为什么在python3不同的编码,解码,windows,linux操作系统下,字符是否能够正确显示. 前提: 了解不同编码用不同的二级制编码和长度来表示字符. 在python3中,各种 ...

  4. [转载]Java web应用中的常见字符编码问题的解决方法

    以下是 Java web应用的常见编码问题 1. html页面的编码 在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Co ...

  5. Java中的字符集编码入门Java中的增补字符

    转载自:http://jiangzhengjun.iteye.com/blog/512083 Java中的字符集编码入门Java中的增补字符 博客分类: 字符集编码 Java Java号称对Unico ...

  6. python在json文件中查找指定数据_Python中json的取值 如何使用python提取json中指定字段的数据...

    python中为什么用json有什么作用 如何用python读取json里面的值啊我爱你,所以我给了你伤害我的权力,只要我能忍受,我会一直陪伴着你,但你不能伤害我太多. 数据如下,我想要读取name. ...

  7. json和python中字典的区别和联系_Python 中json与字典的关系

    Python开发中字典和 json的概念区别: json.dumps( dict ) 字典变为字符 json.loads( jsoninput ) 字符变为字典 一.字典 字典是一种数据结构,而jso ...

  8. python json模块有什么用_Python中json模块与jsonpath模块的区别是什么

    Python中json模块与jsonpath模块的区别是什么 发布时间:2021-02-02 11:15:52 来源:亿速云 阅读:94 作者:小新 这篇文章主要介绍了Python中json模块与js ...

  9. python中字符编码使用_python中字符编码是什么?如何转换字符?

    屏幕前我们看到的文字,在计算机中也是这样表示吗?事实上,我们所有的信息电脑是无法直接理解的,同样我们所要表达的信息,计算机也不能看懂.这就需要架起一个理解的桥梁,也就是编码帮助我们相互之间进行翻译.今 ...

  10. python post json 解析失败_python中json对象转换出错解决方法

    今天在使用python中的json转换碰到一个问题: 接收一个post的json字符串: s={"username":"admin","passwor ...

最新文章

  1. 【java】第一阶段基础知识整理
  2. java用eclipse怎么把main快点打出来
  3. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题...
  4. php swiper 下拉刷新,SwipeRefreshLayout的使用(下拉刷新)
  5. K8S部署Kuboard V3
  6. 海康威视Web端视频开发
  7. 问题:jquery event.which详解
  8. 2018云+未来峰会圆桌面对面:以网络安全之能,造国之重器
  9. 《妈妈是孩子最好的老师》读后感
  10. 用matlab编程怎么做,Matlab教程 Matlab入门图文教程
  11. 打开shp文件最直接的思路
  12. 从0开始,html5零基础入门教程,快来看看!
  13. 聊聊Linux2038年问题
  14. Oracle基本知识点总结
  15. 网络流量分析工具(tcpdump)
  16. java bouncycastle_BouncyCastle
  17. PS和AE结合设计的进度条,有图有视频(秒懂)
  18. Linux下定时删除指定目下n天前的文件
  19. 七麦研究院首发AR产品数据报告,数读App Store上的AR世界
  20. tomcat tomcat配置 项目部署tomcat三种方式

热门文章

  1. 【UOJ】#37. 【清华集训2014】主旋律
  2. css3渐变画斜线 demo
  3. TRUNCATE TABLE command not allowed within multi-statement transaction
  4. JSP指令、动作和对象
  5. ecshop 实现购物车退出不清空
  6. C++实现建立和一二进制树的三个递归遍历
  7. 添加 centos 右键 terminal
  8. WinForm中显示韩语,韩文
  9. mysql数据库索引使用总结和对比
  10. mysql的架构及查询sql的执行流程(一)