《Python Cookbook v3.0.0》Chapter2 字符串、文本

感谢:
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'>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfgwy.html