对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如成都小搅拌车等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称赞。
最常用的编码是UTF-8,如果没有特殊业务要求,请牢记仅使用UTF-8编码。
在爬虫中会经常遇见,需要用encode和decode来进行互相转码
str转bytes
注意,含有中文字符的str不能用acsii格式转码
bytes转str
** 程序中经常会遇到个别字符转码不成功而报错,因此在decode方法中需要这个参数errors='ignore'忽略错误的字节
注意格式化的数据格式
Python 的 json 模块提供了两个函数 json.dumps() 和 json.loads() 来编码和解码JSON数据。
如果要处理的是文件而不是字符串,可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:
json.dumps 用于将 Python 对象编码成 JSON 字符串。
json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。
demjson.encode() 函数用于将 Python 对象编码成 JSON 字符串。
demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。
1、以下实例将数组编码为 JSON 格式数据:
#!/usr/bin/python
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = json.dumps(data)
print json
2、以下实例展示了Python 如何解码 JSON 对象:
#!/usr/bin/python
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print text
base64 是经常使用的一种加密方式,在 Python 中有专门的库支持。
本文主要介绍在 Python2 和 Python3 中的使用区别:
在 Python2 环境:
在 Python3 环境:
Python3 中有一些区别,因为 Python3 中字符都是 unicode 编码,而 b64encode 函数的参数为 byte 类型,所以必须先转码。
以上就是本文的全部内容,如果觉得有用的话欢迎 点赞 和 转发 ,多谢。
推荐阅读:
一 前言
最近一直在做开发相关的工作--基于Django的web 平台,其中需要从model层传输数据到view 层做数据展示或者做业务逻辑处理。我们采用通用的Json格式--Json(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和程序解析。
二 认识Json
2.1 Json 结构
常见的Json格式为 “名称/值”对的集合,其中 值可以是对象,列表,字典,字符串等等。比如
backup_data = {"back_to_host": "dbbk0",
"ip_address": "10.10.20.3",
"host_name": "rac4",
"port": 3306}
2.2 使用Json
Python的Json模块序列化与反序列化的过程分别是 编码和解码。这两个过程涉及到两组不同的函数
编码 把一个Python对象编码转换成Json字符串,json.dumps(data)/json.dump(data,file_handler)
解码 把Json格式字符串解码转换成Python对象,json.loads(data)/json.load(file_handler)
在python中要使用Json模块做相关操作,必须先导入:
import Json
2.3 主要函数
编码函数主要有 json.dumps(data)/json.dump(data,file_handler)
json.dumps()的参数是将python对象转换为字符串,如使用json.dumps序列化的对象json_dumps=json.dumps({'a':1, 'b':2}) ,json_dumps='{"b": 2, "a": 1}'
json.dump 是将内置类型序列化为json对象后写入文件。
解码函数主要由json.loads(data)/json.load(file_handler)
json.loads的参数是内存对象,把Json格式字符串解码转换成Python对象,json_loads=json.loads(d_json) #{ b": 2, "a": 1},使用load重新反序列化为dict
json.load()的参数针对文件句柄,比如本地有一个文件/tmp/test.json json_load=json.load(open('/tmp/test.json'))
具体案例参考如下:
In [3]: data={"back_to_host": "rac1",
...: "ip_address": "10.215.20.3",
...: "host_name": "rac3",
...: "port": 3306}
In [7]: json_str=json.dumps(data)
In [8]: print json_str
{"ip_address": "10.215.20.3", "back_to_host": "rac1", "host_name": "rac3", "port": 3306}
In [9]: json_loads=json.load(json_str)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
ipython-input-9-180506f16431 in module()
---- 1 json_loads=json.load(json_str)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
284
285 ""
注意 从上面的报错信息来看 json.loads 传参是字符串类型,并不是文件句柄,没有 read()属性。
In [10]: json_loads=json.loads(json_str)
In [11]: print json_loads
{u'back_to_host': u'rac1', u'ip_address': u'10.215.20.3', u'host_name': u'rac3', u'port': 3306}
In [12]: type(json_loads)
Out[12]: dict
In [13]: type(json_str)
Out[13]: str
利用dump 将数据写入 dump.json
In [17]: with open('/tmp/dump.json','w') as f:
...: json.dump(json_str,f)
...:
yangyiDBA:~ yangyi$ cat /tmp/dump.json
"{\"ip_address\": \"10.10.20.3\", \"back_to_host\": \"rac1\", \"host_name\": \"rac3\", \"port\": 3306}"
yangyiDBA:~ yangyi$
利用json.load 将dump.sjon的数据读出来并赋值给 data
In [18]: with open('/tmp/dump.json','r') as f:
...: data=json.load(f)
...:
In [19]: print data
{"ip_address": "10.10.20.3", "back_to_host": "rac1", "host_name": "rac3", "port": 3306}
三 小结
本文算是一篇学习笔记,主要对比了json.loads/json.load , json.dumps/ json.dump 的使用差异 ,方便以后更好的使用json 。
以上为本次分享内容,感谢观看。
1、一般来说,声明编码格式在脚本中是必需的。2、如果Python源码文件没有声明编码格式,Python解释器会默认使用ASCII编码。但出现非ASCII编码的字符,Python解释器就会报错。
1、Python 采用代码缩进和冒号( : )来区分代码块之间的层次。2、在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。3、Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。4、对于 Python 缩进规则,初学者可以这样理解,Python 要求属于同一作用域中的各行代码,它们的缩进量必须一致,但具体缩进量为多少,并不做硬性规定。
正确示例代码:
错误示例代码:
Python中使用 # 进行注释,我们在使用# 的时候,# 号后面要空一格在行内注释的时候,中间应该至少加两个空格
print("你好,世界") # 注释
** 使用的一般性原则:**
1、在二元运算符两边各空一格,算术操作符两边的空格可灵活使用,但两侧务必要保持一致2、不要在逗号、分号、冒号前面加空格,但应该在它们后面加(除非在行尾)3、函数的参数列表中,逗号之后要有空格4、函数的参数列表中,默认值等号两边不要添加空格5、左括号之后,右括号之前不要加添加空格6、参数列表, 索引或切片的左括号前不应加空格
使用的一般性原则:
1、编码格式声明、模块导入、常量和全局变量声明、顶级定义和执行代码之间空两行2、顶级定义之间空两行,方法定义之间空一行3、在函数或方法内部,可以在必要的地方空一行以增强节奏感,但应避免连续空行
1、导入总应该放在文件顶部,位于模块注释和文档字符串之后,模块全局变量和常量之前。
2、导入应该按照从最通用到最不通用的顺序分组,分组之间空一行:
3、每个 import 语句只导入一个模块,尽量避免一次导入多个模块
命名规范这一块的大家应该都比较熟悉了,但是不同的编程语言之间的明明规范也是有所区别的~
Python命名建议遵循的一般性原则:
引号使用的一般性原则:
Python跟其他几个主流编程语言的分号使用区别很大Python的代码末尾不需要加分号,而Java和C#等都需要添加
不要在行尾添加分号,也不要用分号将两条命令放在同一行,例如:
Python学习日记