国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python常见问题 > python如何将一串字符串转换为字典

python如何将一串字符串转换为字典

头像

yang

2020-05-13 11:31:233950浏览 · 0收藏 · 0评论

python中将字符串转换为字典的方法:

1、通过 json 来转换

>>> import json
>>> user_info= '{"name" : "john", "gender" : "male", "age": 28}'
>>> user_dict = json.loads(user_info)
>>> user_dict
{u'gender': u'male', u'age': 28, u'name': u'john'}

由于 json 语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号 (官网上有一段描述是 “A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes” ),因此下面的转换是错误的:

>>> import json
>>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
# 由于字符串使用单引号,会导致运行出错
>>> user_dict = json.loads(user_info)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)

2、通过 eval转换

>>> usr_info = '{"name" : "john", "gender" : "male", "age": 28}'
>>> user_dict = eval(user_info)
>>> user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}
>>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
>>> user_dict = eval(user_info)
>>> user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}

通过 eval 进行转换就不存在上面使用 json 进行转换的问题。但是,使用 eval 却存在安全性的问题,比如下面的例子:

# 让用户输入 `user_info`
>>> user_info = raw_input('input user info: ')
# 输入 {"name" : "john", "gender" : "male", "age": 28},没问题
>>> user_dict = eval(user_info)
# 输入 __import__('os').system('dir'),user_dict 会列出当前的目录文件!
# 再输入一些删除命令,则可以把整个目录清空了!
>>> user_dict = eval(user_info)

3、通过 literal_eval转换

>>> import ast
>>> user = '{"name" : "john", "gender" : "male", "age": 28}'
>>> user_dict = ast.literal_eval(user)
>>> user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}
user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}"
>>> user_dict = ast.literal_eval(user)
>>> user_dict
{'gender': 'male', 'age': 28, 'name': 'john'}

更多Python知识请关注Python视频教程栏目。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

美乳| 《破外女》高清完整版| 小花园按摩手法视频教程| 日本大片又大又好看的PPT| 《特殊的家政服务》| 台湾《洞门为君开》演员表| 暴躁少女CSGO免费观看| 妈妈和两个姨妈一起过生日| | 咖啡全国十大品牌| 年轻的瑜伽教练2| 适合夫妻俩晚上看电影的文案| 我学生的老师中字ID| 《漾出OVER FLOWER》…| 年轻的母亲| 打开B站看片| 三叶草M码和欧洲码区别| 不戴套干新婚少妇小琳| 骚一点老子把你CAO爽了| 自行车小故事| 美女被咬小头头视频大全图片| 《性房纵欲》在线观看| 人口兽猪马狗第1集| 打开网站免费进入| 小妹妹爱大棒棒免费观看电视剧一| 爱爱内含光| 李丽珍《红颜祸水》| 摸的下身已洪水泛滥怎么办| 妈妈装睡配合孩子阴阳调和| 他的大手在秘密花园游走漫画| 美国伦理4女警| 男女一起免费观看全集高清完整版..| 刚长毛的初一女生年龄范围| 第一次和公翁做爰又大又粗| 17.C1起草视频| 《厨房激战5》完整版在线观看| 《破外女》高清完整版| 《温柔的老师》电影免费观看| 年轻的朋友电影在线观看免费完整| 蜜桃| 在桌下含她的花蒂和舌头漫画