str()和repr()(及''操作符)以及python对json的简单操作
来源:互联网 发布:php获取数组元素个数 编辑:程序博客网 时间:2024/06/02 01:47
str(),epr()和''运算在特性和功能方面相似,事实上repr()和''做的是完全一样的事情(函数和操作符做同样一件事,是因为在有的场合函数会比操作符更合适),它们返回的是一个对象的“官方”字符串表示。
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
python对json的相关操作
对简单数据类型的encoding 和 decoding:
encoding:把一个Python对象编码转换成Json字符串
decoding:把Json格式字符串解码转换成Python对象
使用简单的json.dumps方法对简单数据类型进行编码
>>> obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,encoding3),'key2':(4,5,6)}]
>>> encodedjson = json.dumps(obj) #encoding:json.dumps()
>>> print repr(obj)
[[1, 2, 3], 123, 123.123, 'abc', {'key2': (4, 5, 6), 'key1': (1, 2, 3)}]
>>> print encodedjson
[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]
>>> print encodedjson[0]
[
>>> print encodedjson[1]
[
>>> print encodedjson[2]
1
>>> print encodedjson[3]
,
>>> print obj[0]
[1, 2, 3]
>>> print obj[0][1]
2
>>> decodejson = json.loads(encodedjson) #decoding :json.loads()
>>> print type(decodejson)
<type 'list'>
>>> print decodejson[4]['key1']
[1, 2, 3]
>>> print decodejson
[[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}]
loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘abc’转化为了unicode类型。
json.dumps方法提供了很多好用的参数可供选择,比较常用的有sort_keys(对dict对象进行排序,我们知道默认dict是无序存放的),separators,indent等参数。
sort_keys:对dict对象进行排序,我们知道默认dict是无序存放的
>>> data1 = {'b':789, 'c':456, 'a':123}
>>> d1 = json.dumps(data1,sort_keys=True)
>>> print d1
{"a": 123, "b": 789, "c": 456}
indent:缩进的意思,它可以使得数据存储的格式变得更加优雅。
>>> d1 = json.dumps(data1, sort_keys=True,indent=4)
>>> print d1
{
"a": 123,
"b": 789,
"c": 456
}
separator:作用是去掉,
,:
后面的空格,在我们传输数据的过程中,越精简越好,冗余的东西全部去掉,因此就可以加上separators参数
。
data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]print 'DATA:', repr(data)print 'repr(data) :', len(repr(data))print 'dumps(data) :', len(json.dumps(data))print 'dumps(data, indent=2) :', len(json.dumps(data, indent=2))print 'dumps(data, separators):', len(json.dumps(data, separators=(',',':')))
输出:
DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}] repr(data) : 35 #data的长度不同dumps(data) : 35dumps(data, indent=2) : 76dumps(data, separators): 29
skipkeys:在encoding过程中,dict对象的key只可以是string对象,如果是其他类型,那么在编码过程中就会抛出ValueError
的异常。
skipkeys
可以跳过那些非string对象当作key的处理
data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, ('d',):'D tuple' } ]try: print json.dumps(data)except (TypeError, ValueError) as err: print 'ERROR:', errprint print json.dumps(data, skipkeys=True)
输出:
ERROR: keys must be a string[{"a": "A", "c": 3.0, "b": [2, 4]}]
.- str()和repr()(及''操作符)以及python对json的简单操作
- str()和 repr() (及 `` 操作符)
- python 的repr和str以及“”
- Python的str()和repr()
- python-str()和 repr()
- 区别python 的str和repr
- python之repr()和str()的区别
- Python 的repr() 和str() 函数
- python之repr()和str()的区别
- 学习Python:repr和str的区分
- python中repr和 str的异同
- python str和repr 的区别
- python str和repr的区别
- python str和repr的区别
- python str和repr的区别
- Python str 和 repr 的区别
- python的str()和repr()函数比较
- python中的repr和str
- tjut 1251
- if语句
- 控件内容遇到导航条出现偏移的情况
- 第3课 Go控制,循环,选择,跳转语句
- Java线程的同步与死锁
- str()和repr()(及''操作符)以及python对json的简单操作
- ios第一天学习
- Nginx+Tomcat负载均衡配置
- POJ 2385 Apple Catching(DP)
- 那些年Dialog踩过的坑
- 快速批量提取文件夹中次级文件夹及文件名称的技巧
- 算法先锋队
- 【杭电oj4907】Task schedule
- 10007---敏捷开发实践(一)--谈谈我对敏捷开发的理解