Json的操作
定义:Json是一个字符。例如:
d = { "error_code": 2, "msg": "无结果" }#json里必须全是双引号
json.dumps()把字典转成json(字符串)
import json #文件名不能命名为json d = {。。。} with open('abc.json','w',encoding='utf-8') as fw: s = json.dumps(d,ensure_ascii=False,indent=8) #把字典转成json字符串
json.loads()将字符串转成字典
with open('abc.txt',encoding='utf-8') as fr: result = fr.read() print('result,刚从文件里面读出来的',type(result)) dic = json.loads(result) print('dic,转换完之后的',dic,type(dic)) result = json.loads(fr) print('result',type(result))
转换后显示中文 ensure_ascii=False
缩进 indent=4
s = json.dumps(d,ensure_ascii=False,indent=8)
json直接操作文件 json.dump转成字符串
json.dump(d,fw,indent=4,ensure_ascii=False)
json直接操作文件json.load转成字典(*要先读文件)
result = json.load(fr)
print('result',type(result))
切片
定义:list取值的一种方式。例如:
l = ['xiaoming', 'xiaohei', 'xiaobai', 'jaojun','xiaolei'] print(l[0:1])#顾头不顾尾,只输出‘xiaoming’ print(l[:3]) #从最前面开始取值 print(l[1:])#取到最后一个值 print(l[0:6:2])#从0取到6,隔2-1个取一个 s='123456789' print(s[::-1])#如果切片的步长是负数的话,那么就是从后往前开始取
#循环的时候不要删list里面的元素,会导致下标错乱(内存地址一样)
li = [1,1,2,3,3,4,5,6,7,8,9] li2 = li[:] print('li',id(li))#查看内存地址 print('li2',id(li2)) for i in li2: if i%2!=0: li.remove(i) print(li)
浅拷贝、深拷贝
import copy stus = ['abc','xioahei','abc2'] stu1 = stus #浅拷贝-内存地址未变 stus2 = stus[:] #深拷贝 stu3 = copy.deepcopy(stus)#深拷贝-内存地址变化
非空即真
s="" l=[] d={} # None #非空即真 if s: print('真') else: print('空')
非0即真
a = -1 if a: print('1') else: print('0')