gpt4 book ai didi

python - python 中正则表达式元组的 math.group 错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:55 25 4
gpt4 key购买 nike

我希望能够操纵这个正则表达式的结果并将其匹配到组中,以便我可以操纵它。我收到一条错误消息:

AttributeError: 'list' object has no attribute 'group'

我的代码如下:

sampleText= 'LOC OL85M132 LOC OL3M051'
matchLOC=re.findall(r'(LOC)\s([^\W\d_]{2})(\d+)M(\d{3})',sampleText)
for i in matchLOC:
print(i)

我的结果是:

('LOC', 'OL', '85', '132')
('LOC', 'OL', '3', '051')

这很好,但是当我尝试将组分配给如下变量时:

MP=matchLoc.group(2)
Yards=matchLoc.group(3)

我收到上面的错误。我想要:

1) 将第三组分配给变量“MP”

2)将第四组分配给变量“Yards”

从这里开始,我想做一系列的操作。例如,将数字 0 添加到最后一个数字的末尾,以及 if-else 循环,例如

if Yards >= 130:
print('Yards = ' + str(int(Yards)-100))
print('MP = ' + str(int(MP) + 0.5))

等等。

最佳答案

以下是如何使用 re.finditer 来做到这一点:

import re
sampleText= 'LOC OL85M132 LOC OL3M051'
for m in re.finditer(r'(LOC)\s([^\W\d_]{2})(\d+)M(\d{3})',sampleText):
#print (m.group(3) + " : " + m.group(4))
MP = int(m.group(3))
Yards = int(m.group(4))
if Yards >= 130:
print('Yards = ' + str(Yards-100))
print('MP = ' + str(MP + 0.5))

参见IDEONE demo

我没有修改您的正则表达式,但我认为捕获 (LOC) 没有意义,因为它是已知文本。请注意,修改捕获组时,您将移动组 ID,并且需要修改整个代码。这就是为什么我将其保留在原始代码中。

关于python - python 中正则表达式元组的 math.group 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181865/

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