问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python中如何将格式化字符串转换成字典

发布网友 发布时间:2022-04-07 11:54

我来回答

2个回答

懂视网 时间:2022-04-07 16:16

比如字符串:

user_info = '{"name" : "john", "gender" : "male", "age": 28}'

我们想把它转为下面的字典:

user_dict = {"name" : "john", "gender" : "male", "age": 28}

有以下几种方法:

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进行转换存在一个潜在的问题。

由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

>>> user_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却存在安全性的问题。

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'}

使用ast.literal_eval进行转换既不存在使用json进行转换的问题,也不存在使用 eval 进行转换的 安全性问题,因此推荐使用ast.literal_eval。

更多Python相关技术文章,请访问Python教程栏目进行学习!

热心网友 时间:2022-04-07 13:24

#-*-coding:utf-8-*-
#1、字典
dict
=
{'name':
'Zara',
'age':
7,
'class':
'First'}
#字典转为字符串,返回:<type
'str'>
{'age':
7,
'name':
'Zara',
'class':
'First'}
print
type(str(dict)),
str(dict)
#字典可以转为
元组
,返回:('age',
'name',
'class')
print
tuple(dict)
#字典可以转为元组,返回:(7,
'Zara',
'First')
print
tuple(dict.values())
#字典转为列表,返回:['age',
'name',
'class']
print
list(dict)
#字典转为列表
print
dict.values
#2、元组
tup=(1,
2,
3,
4,
5)
#元组转为字符串,返回:(1,
2,
3,
4,
5)
print
tup.__str__()
#元组转为列表,返回:[1,
2,
3,
4,
5]
print
list(tup)
#元组不可以转为字典
#3、列表
nums=[1,
3,
5,
7,
8,
13,
20];
#列表转为字符串,返回:[1,
3,
5,
7,
8,
13,
20]
print
str(nums)
#列表转为元组,返回:(1,
3,
5,
7,
8,
13,
20)
print
tuple(nums)
#列表不可以转为字典
#4、字符串
#字符串转为元组,返回:(1,
2,
3)
print
tuple(eval("(1,2,3)"))
#字符串转为列表,返回:[1,
2,
3]
print
list(eval("(1,2,3)"))
#字符串转为字典,返回:<type
'dict'>
print
type(eval("{'name':'ljq',
'age':24}"))
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
瑞尼世家金鬼手表怎么样? 好友戴的瑞尼世家手表,很漂亮,想问下这个表值得选吗? win10系统怎么取消开机电脑win10系统的电脑怎样取消开机密码 win10电脑待机时间win10电脑自动待机怎么取消 win7系统锁屏怎么取消 win7取消电脑自动睡眠win7怎么取消电脑自动锁屏 电脑关闭锁屏win10win10电脑如何关闭自动锁屏 电脑怎么不锁屏电脑如何设置永不锁屏 儿童公园地址 怎么剑魂的技能这么少...都不厉害的呀?? 桌面有个文件.7z格式,一直删除不了如图 清理电脑空间的时候,桌面上这些压缩文件或者类似看不懂的文件和图片如何彻底删除掉? 电脑桌面压缩包删除时一直显示360压缩已打开 删不了 急求大神帮忙 电脑有删除不了的压缩文件咋办 桌面上的压缩文件不能删除 桌面上压缩文件为什么不能删除显示文件正在使用 我电脑屏幕上有个压缩包,删除不掉,怎么能删除呀?希望能得到帮助。 我的电脑咋删不掉压缩文件和文件夹?? 我怎么删除不了电脑桌面上的压缩包图标 zip删除不掉- 问一问 赞后为什么有情侣空间标识? 请问:情侣空间的动态会在别人空间中显示么?. 为什么在我手机QQ上情侣空间里的评论和点赞都没有提醒? 如果QQ大小号绑情侣点赞会不会发现 当主播真的很挣钱吗?是不是很累? 年轻人都以为当主播很容易,实际上当主播有哪些难点? 你们觉得做当一名带货主播难吗? 学拼音先学什么?从什么开始学 隋朝的拼音是什么 似,勒,横,哄,削,朝。的多音字和组词还有拼音 通易付怎么更改手机号 我是做房产中介的,需要多添加微信好友,想添加我家所在的小区群的业主的微信,添加的时候,要如何说呢? 我是做二手房的,房源很重要,我同事有的加那种群都能弄出来房子,这种怎么搞啊,有内行吗,目前,浦东 微信面对面加群,输入1472加入和喜御景台业主群,大家一起讨论一下买的房子? 水分期app客服电话是多少? 腌制泡菜很好吃,泡菜应该怎么腌制呢? 分期易怎么更改手机号 各档次小区业主群究竟在聊什么? 快手欺骗消费者投诉电话 12315管快手吗? 举报快手电话? 快手12315举报电话 跪求QQ空间背景图片素材&lt;男&gt; 要好看滴 帅气滴! 我想要类似于这张图的图片来做qq背景,然后顺便求一些带翅膀的日漫的男主帅气点的图。 找好看的图片,做QQ皮肤,适合男生用的 求几张qq透明皮肤的.男生抽烟的图片.尽量嚣张霸气 网易云开启了定位功能,俩人听歌可以显示距离,想问下这个位置是实时更新的吗?如果我不打开网易云+退出_百度问一问 tinder是不是上线才会更新距离 blued不上线距离会变吗 陌陌留言板显示的距离准确吗? 上面显示的距离是发表地距离还是实时距离