• 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是对要匹配字符的前后限定。()括号为组限定,.点表示所有限 以外的所有单字符,*星表示对.点的不限制次数匹配。

    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)

  • 相关阅读:
    MySQL优化
    SLAM01
    图像处理04
    Be accepted for inclusion in the IEEE INFOCOM 2018 technical program
    CS229 Lecture 02
    图像处理03
    Codeforces 900D Unusual Sequences:记忆化搜索
    Codeforces 914C Travelling Salesman and Special Numbers:数位dp
    BZOJ 4199 [Noi2015]品酒大会:后缀数组 + 并查集
    BZOJ 4650 [Noi2016]优秀的拆分:后缀数组
  • 原文地址:https://www.cnblogs.com/tngh/p/9317108.html
Copyright © 2020-2023  润新知