转译符,re模块,random模块
2018-08-10 11:26:24来源:博客园 阅读 ()
一, 转译符
1.python 中的转译符
正则表达式中的内容在Python中就是字符串
' \n ' : \ 转移符赋予了这个n一个特殊意义,表示一个换行符
' \ \ n' : \ \ 表示取消了\的转译
r 表示取消本字符串的所有转译
在正则表达式中: '\\n'-->'\n',但是在pycharm中 \n为换行符,则需要转译 '\\n',与之匹配
的应为 : '\\\\n'-->'\\n '
在Python中 : r '\\n'-->r '\n'
2. 正则表达式中的转义
' \( ' 表示匹配小括号 ; [() + * ? / $ .] 在字符组中一些特殊的字符会现原形.
[ - ] 只写在字符组的首位的时候表示普通的 减号 / 负号写在其他位置表示范围
如果就是想匹配减号 [1\-9]
二, re 模块
操作匹配的字符串
方法: findall search math 替换 sub subn 切割 compile finditer
1. 查找
findall : re.findall('正则表达式','字符串')
ret = re.findall('\d+','123qwer123df') print(ret) #参数 返回值类型:列表 返回值个数:1 返回值内容:所有匹配的项若没有
匹配到就是空列表 []
search : re.search('正则表达式','字符串')
ret = re.search('\d+','123qwer123df') print(ret) #参数 返回值类型: 正则匹配结果的对象 返回值个数 : 1 如果匹配上就返回对象,没匹配上返回None
print(ret.group()) #返回的对象通过group来获取匹配到的第一个结果
match : re.match('正则表达式','字符串')
ret = re.match('\d+','%^123qwer123df') print(ret) #结果 : None #只从头开始匹配,相当于在正则表达式前添加一个 ^
2. 替换( replace)
sub
ret = re.sub('\d+','H','123qwedf',1) #把'\d+'替换成'H',指定替换一次(不指定次数全替换) print(ret)
subn
ret = re.subn('\d+','H','123qwedf',1) print(ret) #结果 ('Hqwerdf' , 1) 给出替换结果和替换的次数
3. 切割 (split)
ret = re.split('\d+','123qwerdf') print(ret) #按数字切割
4. compile (提高时间效率)
ret = re.compile('-0\.\d+|-[1-9]\d(\.\d+)?') #可以重复被利用 ,在多 次使用某一个相同的正则表达式的时候,compile会提高 程序的效率. re = ret.search('qwe-20df-3') print(re.group()) #结果 -20
5. finditer (提高空间效率)
ret = re.finditer('\d','123qwerdf') #拿到一个生成器 for i in ret #拿到正则表达式对象 print(i.group())
6. 分组优先显示
findall
ret = re.findall('www.(baidu|goole).com,'www.baidu.com') print(ret) #结果 [] findall 会优先显示分组中的 baidu|goole 匹配内容,要想取消分 组优先,(?:正则表达式)
split
ret = re.split('(\d+)','qwe12d34f') print(ret) #遇到分组会保留 被切掉的内容 #结果 ['qwe','12','d','34','f']
search
re.search('\d+(.\d+)(.\d+)?','1.2.3-2*(60+(-40.35/5))') print(ret.group())#全部输出/即是print(ret.group(0))
print(ret.group(1))# .2 优先输出(.\d+) print(ret.group(2))# .3
#如果search中有分组,通过group(n)就能够拿到group中的匹配的内容
7. 分组命名
(?P<name>正则表达式) 表示给分组起名字 ; (?P=name) 表示使用分组
当匹配的内容和 另一部分必须一样是可以使用分组命名
前后组名必须一样才能匹配成功
必须先定义分组才能使用分组
索引方法使用分组
\1 表示使用第一组,匹配到的内容必须和第一个组中的内容完全相同
三, random模块
随机: 在某个范围内取到每一个值的概率是相同的
1. 随机小数
random.random() 0-1之间的随机小数
random.uniform(1,9) 任意范围内的小数
2. 随机抽取
num = [1,2,3,'qwe',('hehe','haha')]
random.choice(num) 随机抽取列表中一个值
random.sample(num,2) 随机抽取列表中2(多个值)值
3. 随机整数
random.randint(1,8) [1,8] 包含8在内的范围内随机取整数
random.randrange(1,8) [1,8) 不包含8在内的范围内随机取整数
random.randrange(1,10,2) [1,8) 不包含8在内的范围内随机取奇数整数
4. 打乱顺序
num = [1,2,3,'qwe',('hehe','haha')]
random.shuffle(num) 在原列表基础上打乱顺序
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3 enum模块的应用 2019-08-13
- 利用python自动生成verilog模块例化模板 2019-08-13
- Python random模块(以后用到一个再更新一个) 2019-07-24
- xadmin进行全局配置(修改模块名为中文以及其他自定义的操作 2019-07-24
- concurrent.futures模块简单介绍(线程池,进程池) 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash