pythonjson中list操作_python json处理、集合操作、函数定义、文件读写

一.高效文件读写:

当文件过大时,可以使用 for line in f: 的方式进行逐行读取,直接循环文件对象,每次循环的时候就是读取的每一行数据

line=line.strip() 去掉换行符

line=line.split(''')将每行数据以某个字符分割,分割完成后,转换成list数据

二.文件操作:

1.为了减少磁盘和内存的交互次数,增加了数据缓冲区,当缓冲区中的数据写满时,才会将缓冲区中的数据写到磁盘当中

f=open('111','w',encoding='utf-8')

f.write(',')

f.flush()#将缓冲区里边的数据立即写到磁盘上,不等缓冲区满

f.close()

2.与上边方法不同,文件的另一种打开方式为:

with open('111','w',encoding='utf-8')as f1,open('222','r',encoding='utf-8') as f2: #打开文件,不用再执行f.close,可打开多个文件

3.文件修改方式:

(1)简单粗暴的方式

# 1.先获取到文件里的所有内容# 2.然后修改内容# 3.清空原先的所有内容

# 4.重新写入

f=open('111','a+',encoding='utf-8')

f.seek(0)

data=f.read()

new_data=data.replace('123','python')

f.read(0) #read完以后指针到了最后

f.truncate() #清空所有内容

f.write(new_data)

f.flush()

f.close()

(2)高效的处理方式

# #word word——nwe

# 1.先打开原来的文件,再打开一个空文件

# 2.循环处理原来的文件里边的每一行数据,处理完成,生成新文件

# 3.把原来的文件删除,把新文件的名字改成原来的名字

import os

with open('word',encoding='utf-8') as fr,open('.word','w',encoding='utf-8') as fw:

for line in fr:

line=line.lstrip() #去掉左边的空格

if line: #判断这一行是否有数据

line=line.replace('你','you') #替换数据

fw.write(line) #写到新文件

os.remove('word')

os.rename('.word','word')

三.集合

集合的格式为:nums={1,2,3,4,1,1,1} 当print(nums)时,输出{1,2,3,4},集合有自动去重的功能,同时集合和字典一样也是无序的,所以不能支持下标(索引)取值

for n in nums:

print(n) 支持for循环取出每行数据

定义空集合:null_set=set(),如果set={}则是定义了一个空字典

list = [1,2,3,4,5,3,6]

list_2 =[2,3,5,7,8]

list=set(list)

list_2 = set(list_2)

print(list.intersection(list_2),'交集 ') #交集 取出重复数据 {2, 3, 5}

print(list.union(list_2),'并集') # 并集 去重-统一展示 {1, 2, 3, 4, 5, 6, 7, 8}

print(list.difference(list_2),'差集') #差集-取出list中有 list_2 没有 {1, 4, 6}

list_3 = set([1,3,6])

print(list_3.issubset(list)) #子集 list_3 的值在list 全有 全有时返回True,反之返回False

print(list.issuperset(list_3)) #父集 list是list_3的父集时,返回True,反之返回False

print(list.symmetric_difference(list_2)) # 对称差集 lsit 和 list_3 互相没有的 返回结果{1, 4, 6, 7, 8} 效果相当于,合并后去除重复的

print(list & list_2) #交集

print(list | list_2) # 并集

print(list -list_2) #差集

print(list ^ list_2) # 对称差集

list.add(777) #一次添加一个

list.update([888,999])#同时添加多个

list.remove(999)#删除指定的,没有找到时报错

list.pop()#随机删除一个

list.discard(888) # 删除一个指定的,不存在时 不会报错

四.json处理

json是一个字符串,只不过长得像字典,json里边只能用双引号

import json

user_info='''

{"aaa":"123456","aa":"123"}

'''

user_dic=json.loads(user_info) #把json串(字符串)转成字典

stu_info={'laowang':{'cars':['BMW','BEM-Z']}}

stu_str=json.dumps(stu_info) #把字典转成json(字符串) 命令带s的是在操作字符串,如:loads和dumps,如果在josn中转换的中文是ascii码,可以在list文件名后边加上 “ensureascii=False”

fw =open('stu','w',encoding='utf-8')

json.dump(stu_info,fw,indent=4) #dump操作文件,不需要自己write了,人家帮你写入文件,indent=4设置格式,加4个缩进,值为4和8都可以

f=open('stu')

res=json.load(f) #直接从文件里拿,不需要再读一次文件了

print(res)

五.函数

函数就是一个功能,一个方法,用来简化代码

def 函数名(参数):函数体 函数名不能是关键字,函数不能以数字开头;

def say(name,sex='男'): #函数,形参,形式参数就是一个变量

#name 必填参数 未知

#sex 默认值参数 非必填 调用时若填写就传填写值,没有填写就用默认值

print('%s hahah'%name)

say('aaa') #实参,实际参数

函数必须调用才能执行,函数名后边加()就是调用他

在函数里边的变量都是局部变量,函数执行结束就没有这个变量了

def calc(a,b):

res = a * b

return res 返回计算结果值,不返回时得不到结果

cur_money=200

nx=calc(100,120) 定义一个变量来接收返回结果

print(nx+cur_money)

如果需要用到函数的处理结果的话,name就写return,不需要的话就不写,不写默认返回none

函数里边如果碰到return,函数立即结束

def my_file(name,content=None):

with open(name,'a+') as f:

f.seek(0)

if content:

f.write(content)

else:

return f.read()

#一个函数只做一件事

#重复的代码就是低级的

#实现同样的功能,代码越少越好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值