Skip to main content
 首页 » 编程设计

Python 正则表达式问题和分组

2024年08月23日28unruledboy

我正在尝试从包含以下行的文本文件中解析数据:

On 1-1-16 1:48 Bob used: 187 
On 1-5-16 2:50 Bob used: 2 

我只想打印时间和使用的次数,所以它看起来像:

1-1-16, 1:48, 187 
1-5-16, 2:50, 2 

我正在使用这个正则表达式:

print(re.search(r"On ([0-9,-, ]+)Bob used ([0-9\.]+)", line.strip())) 

我得到的结果是 <_sre.SRE_Match object; span=(23, 26), match='Bob 使用:187'>

我尝试使用 .group() 但它给出错误“‘NoneType’对象没有属性‘group’”我还注意到它只找到第二个分组(数字)而不是第一个(日期和时间) .

如何解决这个问题?

请您参考如下方法:

您缺少 : 在 Bob 使用 之后,您需要更精确的日期部分表达式 - 例如,\d+-\d+-\d+\d+:\d+:

>>> s = 'On 1-1-16 1:48 Bob used: 187 On 1-5-16 2:50 Bob used: 2' 
>>> re.search(r"On (\d+-\d+-\d+ \d+:\d+) Bob used: ([0-9\.]+)", s).groups() 
('1-1-16 1:48', '187')