python 的格式化录入 输出

本文详细介绍Python中正则表达式的应用,包括多种匹配方式、格式化录入技巧及实例解析,帮助读者掌握正则表达式的常见用法。

贴几个网站:

这是官方文档:

https://docs.python.org/3.5/library/re.html

这是讲格式化录入的几个博客:

推荐先看这个:https://www.cnblogs.com/xiaxiaoxu/p/9749655.html

再看这个:https://blog.youkuaiyun.com/u010138758/article/details/70163944

余下的当做没看懂上面几个的补充(有时间我自己整理一下)

https://www.cnblogs.com/mehome/p/9513492.html

http://www.cppcns.com/jiaoben/python/230100.html

https://blog.youkuaiyun.com/xiaochendefendoushi/article/details/81335597

https://www.cnblogs.com/misswangxing/p/10736310.html

读源码去了解re原理是啥博客的:https://www.jb51.net/article/164276.htm

这是我的总结:(总结了常见用法)

import re   #导入处理的库

ss=input("输入想处理的字符串\n")    #比如:3year 5month---11day
#第一种方式:
pattern = re.compile(r"(\d+)year (\d+)month---(\d+)day")    #定义一个录入格式(格式是一个类:Pattern),并将这个格式生成一个对应的对象,名叫pattern
                                                            # 第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义
                                                            # 接着由 “ ”引起来的内容即为录入格式
ans=pattern.match(ss)
print( ans.groups() )       #groups()的意思: 首先已知ans是字符串匹配格式后的东西,
                            #   .groups()的目的就是把匹配后得到的东西转换成字典形式,字典中的各个元素按顺序就是匹配后得到的东西
                            #   为了不乱其实也可 tt=ans.groups()  然后   print(tt)


#第二种方式:
ss="hello! aaa im tt"        # ss="hello aaa im tt" 则为正确的匹配对象
ans=re.match(r"([a-z]+) ([a-z]+) ([a-z]+) ([a-z]+)",ss,re.I)    #这里直接用re库里的match函数了,同样也是格式化录入
                                                                # 第一个字符是 r,表示 raw string 原生字符,意在声明字符串中间的特殊字符不用转义
                                                                # 接着由 “ ”引起来的内容即为录入格式 :
                                                                #     ()代表对应字典里的一个元素,[]中表示的意思字符集,一个字符的集合,表示可以匹配其中任意一个字符
                                                                # 第三个参数是代表要处理的字符串,这里是 ss
                                                                # 第四个参数可加可不加,有需要再加。
                                                                #          常用的就是这个:re.I 意思是:使匹配的字符串对大小写不敏感

if ans :                       #若上一条语句匹配不成功则ans值为None,若匹配成功则值非空 ;判断一下是否匹配成功则可以进行错误提示
    print("匹配成功")
                                                                
    a=ans.group()              #这里用的是 .group(),其实 .group()就相当于把格式化录入后得到的东西合成一个字符串
    print(a)
    print(a[0])
    
    a=ans.groups()             #就是和 .group()比对一下 
    print(a)
    print(a[0])
    
else :
    print(ans)
    print("匹配失败")
   
#如果说匹配的部分只能匹配一部分那么,会有此情况:
ss="hello aaa im tt"
ans=re.match(r"([a-z]+) ([a-z]+) ",ss,re.I)    
    
if ans:
    a=ans.groups()             
    print(a)                    #输出:('hello', 'aaa')   ,“im! tt”被忽略
else : 
    print("匹配失败1")           #并不会报错
    
ss="hello aaa! im! tt"
ans=re.match(r"([a-z]+) ([a-z,!]+) ",ss,re.I)    #注:[]各类字符之间用 , 相隔开
    
if ans:
    a=ans.groups()             
    print(a)                    #输出:('hello', 'aaa!')   ,“im! tt”被忽略
else :
    print("匹配失败2")           #并不会报错
 

#第三种方式:python的录入与

ss="hello+aa 6789 ~imt!t"
ans=re.match(r"(\S+)\+(\S+) (\d+) ~(\S+)",ss)    #写成\+是因为+在格式化录入时有特殊含义,需要用\转义
                                                 #常用的  : \s,\S 均等同于 c语言的 %s  ;  \d等同于 c语言的 %d
print(ans.groups())

#我大概率会经常使用这个,所以再举一个例子:
#输入日期,并计算今年过了多少天,,,,
ss=input("请输入日期:")     #格式举例:2015year 6month 7day
tt=re.match(r"(\d+)year (\d+)month (\d+)day",ss)
res=tt.groups()
year=int(res[0])
month=int(res[1])
day=int(res[2])
#之后运算步骤省略

参考:

http://www.cppcns.com/jiaoben/python/230100.html

https://www.cnblogs.com/mehome/p/9513492.html

https://www.cnblogs.com/xiaxiaoxu/p/9749655.html

https://www.cnblogs.com/cute/p/9186208.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值