《Python Cookbook v3.0.0》Chapter2 字符串、文本
2024-09-04 12:57:54
感谢:
https://github.com/yidao620c/python3-cookbook
如有侵权,请联系我整改。
本文章节会严格按照原书(以便和原书对照,章节标题可能会略有修改),内容会有增删。
2.4 字符串匹配和搜索
text.startswith()
以xxx开头,
text.endswith()
以xxx结尾,
text.find()
查找xxx的位置,返回下标,
复杂匹配可以用re
,
import re
示例,
>>> text
'today is 11/27/2012. pycon starts 3/13/2013.'
>>> datepat = re.compile(r'(\d+)/(\d+)/(\d+)')
>>> datepat
re.compile('(\\d+)/(\\d+)/(\\d+)')
>>> datepat_no_capture = re.compile(r'\d+/\d+/\d+')
>>> datepat_no_capture
re.compile('\\d+/\\d+/\\d+')
>>> datepat.findall(text)
[('11', '27', '2012'), ('3', '13', '2013')]
>>> datepat_no_capture.findall(text)
['11/27/2012', '3/13/2013']
re.compile
预编译为模式对象,效率更高,
注意,datepat
和datepat_no_capture
的差异,前者带()
,后者没有,
带()
意味着捕获分组
,结果以tupple
形式返回,以便对每一项做后续处理
在正则表达式中,
r
,表示原始字符串,否则反斜杠也需要转义,'(\\d+)/(\\d+)/(\\d+)'
除了findall()
,match()
可以用来从头(起始)匹配,尾部不管,
示例,
>>> datepat.match('11/27/2012')
<re.Match object; span=(0, 10), match='11/27/2012'>
>>> datepat.match('x11/27/2012')
>>> datepat.match('11/27/2012x')
<re.Match object; span=(0, 10), match='11/27/2012'>
最新文章
- 【原】Spark之机器学习(Python版)(二)——分类
- SpringMVC工作原理
- 必须正确理解的---ng指令中的compile与link函数解析
- jQuery cookie插件保存用户登陆信息
- 【C#学习笔记】从粘贴板复制文本
- centos6.5 安装mono
- python challenge第1关--NoteBook上的“乱码”
- careercup-数学与概率 7.7
- Monkey源码分析之事件源
- 职业定位(移动端、ios开发、Android开发)
- C#图解教程 第二十四章 反射和特性
- Dynamics CRM 通过Odata创建及更新记录各类型字段的赋值方式
- pmi-ACP考试知识点梳理(部分)
- [原创]Xilinx Vivado 2017.4/2018.3/2016.4/2015.4/ISE14.7下载及其安装
- 设计模式系列之策略模式(Strategy Pattern)
- 字符编码:Unicode和UTF-8之间的关系
- OGC标准服务 WMS WCS WFS WPS
- Matplotlib学习---用seaborn画联合分布图(joint plot)
- centos 6.5 安装jdk1.8
- Python基础之面向对象进阶二