介绍
在用Python去读PHP语言开发的项目的数据库的时候,发现一些字段里存储的居然是经过PHP的serialize函数序列化过的数据,这个要解开它通过json库是不行的了,Python专门有个库用来模拟PHP语言的serialize和unserialize的功能,它就是phpserialize库。
安装
phpserialize库可以直接通过pip进行安装。
pip3 install phpserialize
使用
序列化
使用phpserialize库序列化一个结构转化为一个字符串用到的是dumps方法,用法和json库类似,区别是编码参数不是encoding是charset。
list= {
'id': 1,
'name': "names1",
'abilities': [
"PHP",
"Java",
"Python",
"JavaScript",
"C/C++",
"Asp.net"
]
}
print("原始数据:")
print(list)
print("序列化数据:")
user_text = phpserialize.dumps(list, charset="utf-8")
print(user_text )
可以看到序列化的结果和PHP的serialize基本一致。
反序列化
使用phpserialize库反序列化一个序列化字符串得到原始数据结构用的是loads方法,用法和json库基本一样,同样编码参数也是charset而不是我们想象的encoding。
list
= b'a:4:{s:2:"id";i:1;s:4:"name";s:6:"names1";s:3:"sex";i:1;s:7:"address";a:2:{i:0;s:28:"\xe6\xb2\xb3\xe5\x8c\x97\xe7\x9c\x81\xe4\xbf\x9d\xe5\xae\x9a\xe5\xb8\x82XX\xe8\xb7\xafXX\xe5\x8f\xb7";i:1;s:34:"\xe5\x86\x85\xe8\x92\x99\xe5\x8f\xa4\xe5\x91\xbc\xe4\xbc\xa6\xe8\xb4\x9d\xe5\xb0\x94\xe5\xb8\x82XX\xe8\xb7\xafXX\xe5\x8f\xb7";}}' print("序列化数据:") print(list
) print("原始数据:") user_text
= phpserialize.loads(list
, charset="utf-8") print(user_text
)
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网
声明:本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。