Pyhton入门 笔记 第四天 正则表达式与JSON
一,正则的替换
import re
lanuage='PythonC#JavaC#PHPC#'
r=re.sub('C#','Go',lanuage,1) #sub替换函数 ,第一个参数为要被替换的单词如:C#,第二个参数为被替换成为的结果单词如:GO,第三个参数为字符集如:lanuage,第四个参数为被替换的次数,默认为0表示无限替换,不设限制。正例为1表示只替换一次,第五个参数为模式,可忽略。
print(r)
结果:PythonGOJavaC#PHPC#
上面的sub函数也可以用replace代替
lanuage.replace('C#','GO') # 但要注意,pyhton语言中str是不可变的,所以不可被更换的。当要打印时要赋值给变量
tngh=lanuage.replace('C#','GO') #此时才能打印
print(tngh)
二,动态替换
2.1)
import re
lanuage='PythonC#JavaC#PHPC#'
def convert(value):
matched=value.group() #当C#以value值的形式传入到convert函数中时,是一个对象object的形式,所以无法直接输出或打印,要通过group()函数转换。
return '||'+matched+'||'
r=re.sub('C#',convert,lanuage) #以函数为替换结果
print(r)
结果:Python||C#||Java||C#||PHP||C#||
2.2) 要求把字符集S内的数字大于6的改为9小于6的改为0
import re
s='a8c2e3q6t1h2w86j7'
def convert(value):
matched=value.group()
if int(matched)>=6: #字符集S内为str字符形,所以要转化成数字进行比较。
return '9' #正则只能返回字符形,所以要对9加引号
else:
return '0'
r=re.sub('\d',convert,s)
print(r)
三,正则表达式的匹配
import re
s='a8c2e3q6t1h2w86j7'
r=re.match('\d',s) #match()函数是从第一位开始匹配,如果第一位匹配成功就记录下来位置,并退出匹配。如果第一位匹配不成功直接返回none
print(r.span()) #span()函数记录匹配步数
r1=re.search('\d',s) #search()函数只匹配一次,成功就退出匹配
print(r1.group())
r2=re.findall('\d',s)
print(r2)
注:match()和search()函数返回的都是对象Objict
四,正则表达式(组) ,要求,找出两个单词之字符集,不包括单词本身.
import re
s='life is short,i use python'
r=re.search('life(.*)python',s) #单词life与python是对要匹配字符的前后限定。()括号为组限定,.点表示所有限\n以外的所有单字符,*星表示对.点的不限制次数匹配。
print(r.group(1)) #group()函数内的参数为对正则组的限定,默认为0,可以不写,输出所有。为1是对正则一个组限定,只能输出组内的字符集。
上例最后两句,也可以写为
r=re.findall('life(.*)python',s)
print(r)
输出结果一样。
五,正则组的案例 ,要求,多单词之间的匹配
import re
s='life is short,i use python,i love python'
r=re.search('life(.*)python(.*)python',s) #多个组的限定
print(r.group(0))
print(r.group(1))
print(r.group(2))
print(r.group(0,1,2))
print(r.groups())
六,反序列化 JSON
import json
json_str={"name":"tngh","age":18} #json格式的key必须都要用双冒号,字符也要用双冒号
json_str1=[{"name":"tngh","age":18,"flag":false},{"name":"tngh","age":18}] #json中有不同的数据格式,对应到pyhton中也就有不同的数据格式。有可能是字典也有可以是序列。
student=json.loads(json_str) #把json数据转化成python数据,并赋值给变量student
print(type(student))
print(student)
七 序列化python转化数据到json
也是调用json模块
使用json.dumps()函数
import json
student=[{'name':'tngh','age':18,'flag':false},{'name':'tngh','age':18}]
json_str=json.dumps(student)
print(type(json_str))
print(json_str)