gpt4 book ai didi

Python 从列表中获取所有正则表达式匹配组

转载 作者:行者123 更新时间:2023-11-28 22:00:35 25 4
gpt4 key购买 nike

假设我已经读取了一个文本文件的所有行,如下所示:

ifile = open('myfile.txt')
lines = ifile.readlines()

现在,假设我有以下正则表达式:

rgx = re.compile(r'Found ([0-9]+) solutions')

我可以用

result = filter(rgx.match,lines)
print result

获取匹配列表,但我想要的是匹配组列表。例如,而不是像这样的输出:

Found 3 solutions
Found 35 solutions
Found 0 solutions

我想要这样的输出:

3
35
0

我该怎么做?

最佳答案

import re

rgx = re.compile(r'Found ([0-9]+) solutions')

with open('myfile.txt') as f:
result = [m.group(1) for m in (rgx.match(line) for line in f) if m]

内部循环 (rgx.match(line) for line in f) 是一个生成器表达式,其作用类似于 apply()。对于文件中的每一行,它调用 rgx.match() 并产生结果,一个 SRE_Match 对象(我通常只称它为“匹配对象”)。

外层循环有 if m 会丢弃任何不为真的结果(re.match() 返回 None 当模式不匹配)。然后 m.group(1) 使用匹配对象从括号内获取文本。有关详细信息,请参阅 re 模块的文档。由于外循环是列表理解的一部分,因此会构建并返回结果列表。

关于Python 从列表中获取所有正则表达式匹配组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com