python处理编码问题和JSON格式

从文件读出数据:默认utf8编码

json.dumps()输出数据:默认unicode编码

json读取(json是种通用的数据传输格式)

import ujson as json #for performance

jobj = json.loads(json_str) #type(jobj)==<type ‘dict’>

json_str = json.dumps(jobj) #默认输出unicode

json.dumps(jobj, ensure_ascii=False) #输出utf8格式

字符串做key

>>> s={}

>>> s[1]=((2,3))

>>> json.dumps(s)

‘{"1":[2,3]}’

log,redis,mc_cache,hbase存储都建议使用json格式

python -mjson.tool  #json排版显示

ultra json不支持python中long类型

>>> import json, ujson

>>> json.dumps(18446744073709551616L)

‘18446744073709551616‘

>>> ujson.dumps(18446744073709551616L)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

OverflowError: long too big to convert

json.dumps输出的字符串手动粘贴置为常量,需要字符串转义,vim操作是s/"/\\"/g

简单介绍:

http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html

json格式:

http://www.json.org/json-zh.html

http://www.jsoneditoronline.org/

中文编码

def to_utf8(s):

return s if isinstance(s, str) else s.encode(‘utf8‘)

def to_unicode(s):

return s if isinstance(s, unicode) else s.decode(‘utf8‘)

中文unicode不能写文件

空格转utf8后无法用strip()去除

>>> s=u‘ 有的时候,之所以哭泣,并不是因为软弱,而是因为坚强太久。@[email protected]_tab‘

>>> t=u‘有的时候,之所以哭泣,并不是因为软弱,而是因为坚强太久。@[email protected]_tab‘

>>> s

u‘\xa0\u6709\u7684\u65f6\u5019\uff0c\u4e4b\u6240\u4ee5\u54ed\u6ce3\uff0c\u5e76\u4e0d\u662f\u56e0\u4e3a\u8f6f\u5f31\uff0c\u800c\u662f\u56e0\u4e3a\u575a\u5f3a\u592a\u4e45\[email protected][email protected]_tab‘

>>> t

u‘\u6709\u7684\u65f6\u5019\uff0c\u4e4b\u6240\u4ee5\u54ed\u6ce3\uff0c\u5e76\u4e0d\u662f\u56e0\u4e3a\u8f6f\u5f31\uff0c\u800c\u662f\u56e0\u4e3a\u575a\u5f3a\u592a\u4e45\[email protected][email protected]_tab‘

>>> s.strip()

u‘\u6709\u7684\u65f6\u5019\uff0c\u4e4b\u6240\u4ee5\u54ed\u6ce3\uff0c\u5e76\u4e0d\u662f\u56e0\u4e3a\u8f6f\u5f31\uff0c\u800c\u662f\u56e0\u4e3a\u575a\u5f3a\u592a\u4e45\[email protected][email protected]_tab‘

>>> t.strip()

u‘\u6709\u7684\u65f6\u5019\uff0c\u4e4b\u6240\u4ee5\u54ed\u6ce3\uff0c\u5e76\u4e0d\u662f\u56e0\u4e3a\u8f6f\u5f31\uff0c\u800c\u662f\u56e0\u4e3a\u575a\u5f3a\u592a\u4e45\[email protected][email protected]_tab‘

>>> s.encode(‘utf8‘)

‘\xc2\xa0\xe6\x9c\x89\xe7\x9a\x84\xe6\x97\xb6\xe5\x80\x99\xef\xbc\x8c\xe4\xb9\x8b\xe6\x89\x80\xe4\xbb\xa5\xe5\x93\xad\xe6\xb3\xa3\xef\xbc\x8c\xe5\xb9\xb6\xe4\xb8\x8d\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe8\xbd\xaf\xe5\xbc\xb1\xef\xbc\x8c\xe8\x80\x8c\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe5\x9d\x9a\xe5\xbc\xba\xe5\xa4\xaa\xe4\xb9\x85\xe3\x80\[email protected][email protected]_tab‘

>>> t.encode(‘utf8‘)

‘\xe6\x9c\x89\xe7\x9a\x84\xe6\x97\xb6\xe5\x80\x99\xef\xbc\x8c\xe4\xb9\x8b\xe6\x89\x80\xe4\xbb\xa5\xe5\x93\xad\xe6\xb3\xa3\xef\xbc\x8c\xe5\xb9\xb6\xe4\xb8\x8d\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe8\xbd\xaf\xe5\xbc\xb1\xef\xbc\x8c\xe8\x80\x8c\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe5\x9d\x9a\xe5\xbc\xba\xe5\xa4\xaa\xe4\xb9\x85\xe3\x80\[email protected][email protected]_tab‘

>>> s.encode(‘utf8‘).strip()

‘\xc2\xa0\xe6\x9c\x89\xe7\x9a\x84\xe6\x97\xb6\xe5\x80\x99\xef\xbc\x8c\xe4\xb9\x8b\xe6\x89\x80\xe4\xbb\xa5\xe5\x93\xad\xe6\xb3\xa3\xef\xbc\x8c\xe5\xb9\xb6\xe4\xb8\x8d\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe8\xbd\xaf\xe5\xbc\xb1\xef\xbc\x8c\xe8\x80\x8c\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe5\x9d\x9a\xe5\xbc\xba\xe5\xa4\xaa\xe4\xb9\x85\xe3\x80\[email protected][email protected]_tab‘

>>> t.encode(‘utf8‘).strip()

‘\xe6\x9c\x89\xe7\x9a\x84\xe6\x97\xb6\xe5\x80\x99\xef\xbc\x8c\xe4\xb9\x8b\xe6\x89\x80\xe4\xbb\xa5\xe5\x93\xad\xe6\xb3\xa3\xef\xbc\x8c\xe5\xb9\xb6\xe4\xb8\x8d\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe8\xbd\xaf\xe5\xbc\xb1\xef\xbc\x8c\xe8\x80\x8c\xe6\x98\xaf\xe5\x9b\xa0\xe4\xb8\xba\xe5\x9d\x9a\xe5\xbc\xba\xe5\xa4\xaa\xe4\xb9\x85\xe3\x80\[email protected][email protected]_tab’

参考:也谈 Python 的中文编码处理

http://in355hz.iteye.com/blog/1860787

原文地址:https://www.cnblogs.com/yaoyaohust/p/10363099.html

时间: 2024-11-09 16:42:34

python处理编码问题和JSON格式的相关文章

python解析url返回的json格式数据

1.python代码# --*-- coding=utf-8 --*--import urllib2import urllibimport json weatherHtml = urllib.urlopen('http://songsearch.kugou.com/song_search_v2?keyword=周杰伦&pagesize=1')#通过urllib模块中的urlopen的方法打开urlweatherHtml1 = weatherHtml.read()#通过read方法获取返回数据pr

python requests方法post请求json格式处理

方法如下: import requestsimport json data = {    'a': 123,    'b': 456} ## headers中添加上content-type这个参数,指定为json格式headers = {'Content-Type': 'application/json'} ## post的时候,将data字典形式的参数用json包转换成json格式.response = requests.post(url='url', headers=headers, dat

Python将JSON格式数据转换为SQL语句以便导入MySQL数据库

前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据,我们希望把这些数据导入到MySQL数据库中.phpMyadmin可以把MySQL数据库中的数据导出为JSON格式文件,但却不能把JSON格式文件导入到MySQL数据库.为了实现这个目标,可以编写Python脚本将JSON格式数据转换为SQL语句以便导入MySQL数据库. JSON文件tencent.json部分内容: {"recruitNumber": "1", "name&qu

PHP中将字符串变量转化成Json格式

1 <?php 2 header("Content-Type:text/html;charset=utf-8;"); 3 $arr = array ('Version_code'=>2,'Version_name'=>'UpdateVersion','Versoin_desc'=>'更新了地图功能','Versoin_path'=>'http://nnddkj.com/BusIot/APK/BusIot.apk'); 4 echo json_encode(

python对象和json格式文本之间的转换

python进程中的实例和json格式的字符串之间的映射关系是非常直接的,相当于同一个概念被编码成不同的表示: str in json form ----json.loads()-----> python object str in json form <----json.dumps()----- python object 不过需注意类型的匹配,否则会报错.比如说json格式中大括号中的键值应当写成字符串.概念上json文本和python数据类型之间的对应关系是: 有没有觉得实在是太简单了!

Python怎么读写json格式文件

JSON-是一个轻量级的数据交换格式.点击打开百度百科 JSON维基百科:http://zh.wikipedia.org/wiki/JSON json模块 关于json的官方文档:点击打开链接 本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创.不定期更新,有错误请指正. Sina微博关注:@The_Third_Wave 如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址. d

python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串) json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数

python 使用json格式转换

什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这

Python[7] :Python制作json格式和shell格式的API

api(应用程序编程接口) API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节. 继承前几篇文章,围绕资产管理搜集的信息,进行这篇文章的api 一.sqlite数据库的基本使用 资产管理的后台数据库用的是sqlite,这个是轻量级的数据库,大家可能对这个数据库很陌生.那么我们就简单的来看看这个数据库是如何使用的? 1.登陆