python 怎样表示特殊符号_Python标准库re

Python标准库的定义

Python的库特别的丰富,安装后自带的库,这些库称为标准库,标准库有哪些?从哪里去找呢?

官方网站查看文档

https://www.python.org/

ea52d45722ad60e9332fd6b55adc5d11.png

d4de416ad9a0d5d791e344e60d7b42b7.png

49231b3151fe7edd7829f5d3904b8f7f.png

这里面就是Python标准库的内容了

这些库的基本满足正常开发使用

常用模块:

文本处理的re

日期类型的time、datetime

数字和数学类型的math、random

文件和目录访问的pathlib、os.path

数据压缩和归档的tarfile

常用操作系统的os、logging、argparse

多线程的threading、queue

Internet数据处理的base64、json和urllib

结构化标记处理工具的html、xml

开发工具的unitest

调式工具的timeit

软件包发布的venv

运行服务的__main__

正则表达式re

第一个要掌握的库--正则表达式库

re 是进行文本的查找和文本匹配的

#匹配单个字符功能import rep=re.compile('a')print(p.match('a'))

809aaed78e49d0d005ccf9b2f1584bf4.png

#匹配功能import rep=re.compile('a')print(p.match('b'))

e389a9a98f07977245c387f4a927d8b1.png

小结

很多的编程都是从0下标开始的,字符串也是如此,匹配了一个字符,匹配的对象是a

匹配一串字符import rep=re.compile('Man')print(p.match('Man'))

41c09d12106be71a9435508c67845533.png

出现更多的a时import rep=re.compile('Man')print(p.match('Maaaan'))

cc8ca5727d727c30e74ef177ae5dbd24.png

如何处理以上问题

匹配一串字符,并且字符串有一定的规律

特殊的字符称为元字符

正则表达式的元字符

正则表达式的神奇之处在于用很多特殊的符号来去匹配指定的字符

常用特殊符号

.匹配任意的单个字符

import rep=re.compile('.')print(p.match('M'))

ca6610884d3426d7cdd26343f7b8581d.png

.可以匹配多个,匹配多个就输入多个·

^表示以什么样的字符做开头,再搜索和替换的时候这个符号就非常重要

表示从开头进行搜索

$表示以什么样的字符做结尾,从后面向前面匹配

*匹配前面的字符从0次到多次的

import rep=re.compile('Ma*n')print(p.match('Mn'))

45e59edcef85a5ed687694dbcddbe433.png

import rep=re.compile('Ma*n')print(p.match('Maaaan'))

2caefcb766f209265bcc15f910775b65.png

+表示前面字符出现1次到多次

?表示字符出现0次或1次

{m}表示大括号里面要填写一些内容,大括号表示前面的字符出现的指定次数(如果出现次数不匹配就为失败)

import rep=re.compile('Ma{2}n')print(p.match('Maan'))

652c35d6fecbb09b9494416821f1e145.png

{m,n}表示出现m~n次

[]任意的字符匹配成功,都匹配成功

|表示选择字符左边或者右边,通常会和括号用在一起

\d表示匹配的内容是转译数字,也可用单个匹配,匹配起来就非常麻烦,相当于[0-9]+

\D表示匹配不包含数字的,123-456-789把非数字提取出来,只保留数字,就是用\D

\s表示匹配的字符串,表示只包括a-z这样的字符串

()表示进行分组

^$表示一行是空行

.*?表示不使用贪婪模式

匹配三个任意的字符

import rep=re.compile('...')print(p.match('Man'))

可以和其他符号组合

import rep=re.compile('.{3}')print(p.match('Man'))

a3e01f96c2ed2c3640a85a4abe7a1c0f.png

匹配年月日,把年月日都取出来

import rep=re.compile('.{4}-.{2}-.{2}')print(p.match('2020-07-29'))

用户输入的日期和我们预想的不符

import rep=re.compile(r'(\d+)-(\d+)-(\d+)')#告诉程序原样输出,()小括号进行分组,+表示多次的print(p.match('2020-7-29'))

1b7adb458da116c9c1791f9acd5ff909.png

为了不转译加r

演示如下

print('\nx\n')#\n表示换行符

ee1cd176295cc3aad6ab294570025e6c.png

print(r'\nx\n')

d0e0e6e041ed2060d84186d6138b552d.png

所以在以上我们发现用到了r

取出年月日的某一部分

import rep=re.compile(r'(\d+)-(\d+)-(\d+)')print(p.match('2020-7-29').group(1))#group()里面的1表示第一组print(p.match('2020-7-29').groups())#取出所有

f3419cb853a018df26168971b26e965d.png

赋值给变量import rep=re.compile(r'(\d+)-(\d+)-(\d+)')yaer,month,day=p.match('2020-07-29').groups()print(yaer)print(month)print(day)

eaceaadd42a79b3c7fdbd9c62c1389ea.png

正则表达式库函数match与search的区别

Match与正则表达式要一一对应

在匹配之前要清楚的知道字符串是什么形式的出现的

如果用户输入不准确的日期,那么是会报错的,这样我们就引入search

不完全匹配

import rep=re.compile(r'(\d+)-(\d+)-(\d+)')print(p.search('aa2020-7-29'))

4c5ca29542a1ef75f3d7b4297143355d.png

search用于函数中搜索指定的字符串

match用于完全匹配进行分组

Python标准库-正则表达式库替换函数sub()的实例

sub()在re中字符串的替换

Sub()一般有三个参数:

第一个参数为匹配规则

第二个参数为将字符串替换的

第三个是将要替换的字符串

将abcd中的c替换成*

import rea= re.sub('c', '*', 'abcd')print(a)

1941ace1598c8b7f581306cb07852d4f.png

import rephone='123-4567-8900'#这是电话号码a=re.sub(r'#.*$','',phone)#将#号后的内容替换为空print(a)

a32da314fbe79b74ff3777a75dc62157.png

横线替换掉,只保留数字(用\D表示非数字字符替换为空)

import rephone='123-4567-8900'#这是电话号码a=re.sub(r'#.*$','',phone)print(a)a1=re.sub(r'\D','',phone)print(a1)

b7e9942b85ac2624deca5b92bc1a974b.png

a7bf4697d7bafa4012c0f047e54a0ec4.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值