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)

 

posted @ 2018-07-16 12:36  annier  阅读(239)  评论(0编辑  收藏  举报