文章插图
文章插图
1. 介绍
1.1 介绍
福哥在用Python去读PHP语言开发的项目的数据库的时候,发现一些字段里存储的居然是经过PHP的serialize函数序列化过的数据,这个要解开它通过json库是不行的了,怎么办呢?
原来Python专门有个库用来模拟PHP语言的serialize和unserialize的功能,它就是phpserialize库 。
2. 安装
phpserialize库可以直接通过pip进行安装 。
pip3installphpserialize
3. 使用3.1 序列化
使用phpserialize库序列化一个结构转化为一个字符串用到的是dumps方法,用法和json库类似,区别是编码参数不是encoding是charset 。
user={'id':35,'name':"福哥",'abilities':["PHP","Java","Python","JavaScript","C/C++","Asp.net"]}print("原始数据:")print(user)print("序列化数据:")userSN=phpserialize.dumps(user,charset="utf-8")print(userSN)
可以看到序列化的结果和PHP的serialize基本一致 。因为福哥设置的编码的UTF-8的,所以“福哥”占用了6个字符 。4. 反序列化
使用phpserialize库反序列化一个序列化字符串得到原始数据结构用的是loads方法,用法和json库基本一样,同样编码参数也是charset而不是我们想象的encoding 。
userSN=b"a:3:{s:2:"id";i:35;s:4:"name";s:6:"xe7xa6x8fxe5x93xa5";s:9:"abilities";a:6:{i:0;s:3:"PHP";i:1;s:4:"Java";i:2;s:6:"Python";i:3;s:10:"JavaScript";i:4;s:5:"C/C++";i:5;s:7:"Asp.net";}}"print("序列化数据:")print(userSN)print("原始数据:")user=phpserialize.loads(userSN,charset="utf-8")print(user)
反序列化的时候最好也加上编码参数,避免以默认编码反序列化出现错误的情况 。5. 总结
【php和python哪个好 php与python的区别哪个前景好】福哥今天带着童鞋们学习了Python的phpserialize库的使用方法,通过phpserialize库可以让Python语言拥有解析PHP的序列化数据的能力 。
- 网站框架源码 网站模板和源码
- 宇宙少女311事件是什么意思 苞娜不和吴宣仪互动
- 矢野浩二老婆到底是谁 和傅晶的绯闻真相
- 管彤和韩红结婚照真相 两人的绯闻已经辟谣
- 非常完美李雪和谁牵手成功 现状如何了
- 清linux的缓存 linux如何清理缓存
- 如何注册公司和品牌商标 品牌商标是怎么注册的
- saas是云服务吗 云服务和saas有什么区别
- e系列cpu和i系列cpu差别 i系列跟e系列的cpu区别
- 为什么想吃辣的