数学.从python中的正则表达式元组中分组错误



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

AttributeError: 'list' object has no attribute 'group'
我的代码如下:
sampleText= 'LOC OL85M132 LOC OL3M051'
matchLOC=re.findall(r'(LOC)s([^Wd_]{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([^Wd_]{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,并且需要修改整个代码。

re.finall():

返回字符串中所有非重叠匹配项的列表。

你可能需要:

for _, _, mp, yards in matchLOC:
    yards = int(yards)
    if yards >= 130:
       ...

相关内容

  • 没有找到相关文章

最新更新