python将字符串转换成对应的python数据类型--eval和json.loads(),json.dumps()

eval()和json.loads() 都可以将字符串转换成对应的python数据类型,举个字典的例子,同样适合其他数据类型元组、列表、集合。

复制代码
In [3]: ss = '{"a":1,"b":2}'

In [4]: type(eval(ss))
Out[4]: dict

In [7]: type(json.loads(ss))
Out[7]: dict
复制代码

json一种轻量级数据交换格式,可以将json对象当作比较特殊的字符串,eval与json.loads都可以将大部分的JSON串转成python对象,但也有区别:

>>> import json
>>> s = '{"one":1,"two":2}'
>>> json.loads(s)
{u'two': 2, u'one': 1}
>>> eval(s)
{'two': 2, 'one': 1} 

json.loads与eval都能将s转成python中的对象,json.loads将json中的字符串转成unicode(types.UnicodeType),eval转成了str(types.StringType)。
对于普通的数据类型,json.loads和eval都能用,但:

>>> x="[null,true,false,1]"
>>> json.loads(x)
[None, True, False, 1]
>>> eval(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'null' is not defined

在遇到特殊类型的时候,eval就不管用了。

在python中使用json.loads() (用于将json对象转换成python对应的数据类型)和json.dumps()用于将python数据类型转换成json对象,下面举个例子

复制代码
In [10]: ss
Out[10]: '{"a":1,"b":2}'

In [11]: a = json.loads(ss)

In [12]: type(a)
Out[12]: dict

In [13]: x = json.dumps(a)

In [14]: type(x)
Out[14]: str
复制代码

原文链接:https://blog.csdn.net/djskl/article/details/44783777

posted @ 2019-11-11 16:25  彼岸xy  阅读(1829)  评论(0编辑  收藏  举报