Python re 模块
Python的re模块是专门用于处理正则表达式的模块,re模块提供了对正则表达式进行匹配和替换的支持,通过学习和使用re模块,可以有效地处理一些基于模式匹配的问题。
re.finditer()
函数
re.finditer()
是re模块中提供的一个函数,它的作用是在字符串中查找与正则表达式匹配的所有子串,并以迭代器的形式返回。
re.finditer 函数的语法如下:
re.finditer(pattern, string, flags=0)
参数说明:
pattern
:要匹配的正则表达式string
:要搜索的字符串flags
:匹配模式,可以选择多个模式,用 "|"(竖线)分隔
返回值:
re.finditer()函数返回一个迭代器对象,它包含了所有匹配到的子串。
re.finditer().groupdict()
函数
re.finditer()
函数返回的迭代器对象中,每个元素都是一个匹配到的子串,可以使用groupdict()
函数提取匹配到的子串中的具体内容。
re.finditer().groupdict() 函数的语法如下:
match.groupdict()
返回值:
返回一个字典,包含正则表达式中所有命名子组的匹配内容。
示例:
假设有一个字符串text
,它的内容如下:
text = 'name: Jack, age: 20, height: 176cm; name: Tom, age: 22, height: 184cm; name: Lucy, age: 20, height: 162cm;'
现在我们要从这个字符串中提取出所有的姓名和身高信息,可以使用re模块来实现。
import re
pattern = r"name: (?P\w+),.*?height: (?P\d+)cm;"
matches = re.finditer(pattern, text)
for match in matches:
print(match.groupdict())
输出结果如下:
{'name': 'Jack', 'height': '176'}
{'name': 'Tom', 'height': '184'}
{'name': 'Lucy', 'height': '162'}
在上面的示例代码中,我们使用了re.finditer()
函数查找匹配到的子串,然后使用groupdict()
函数提取出了子串中的姓名和身高信息,并将结果打印出来了。
另外,如果我们要同时提取出姓名和年龄信息,可以修改正则表达式来匹配符合要求的子串:
pattern = r"name: (?P\w+), age: (?P\d+),.*?height: (?P\d+)cm;"
matches = re.finditer(pattern, text)
for match in matches:
print(match.groupdict())
输出结果如下:
{'name': 'Jack', 'age': '20', 'height': '176'}
{'name': 'Tom', 'age': '22', 'height': '184'}
{'name': 'Lucy', 'age': '20', 'height': '162'}
这里,我们在正则表达式中新增了对年龄信息的匹配,然后修改了groupdict()
函数的返回结果,使它可以同时提取出姓名、年龄和身高信息。