当前位置: 代码迷 >> python >> AttributeError:组
  详细解决方案

AttributeError:组

热度:134   发布时间:2023-06-16 10:17:57.0
from mrjob.job import MRJob
import re

Creation_date=re.compile('CreationDate=\"[0-9]*\"[:17]')
class Part2(MRJob):
    def mapper(self, _, line):
        DateOnly=Creation_date.group(0).split("=")
        if(DateOnly > 2013):
           yield None, 1

    def reducer(self, key, values):
        yield key, sum(values)

if __name__ == '__main__':
     Part1.run()

我已经为MapReduce Job编写了python代码,其中CreationDate =“ 2010-07-28T19:04:21.300”。 我必须找到创建日期为2014年1月1日或之后的所有日期。 但是我遇到了一个错误。

( 的结果)没有group方法:

>>> pattern = re.compile('CreationDate="([0-9]+)"')
>>> pattern.group
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: '_sre.SRE_Pattern' object has no attribute 'group'

为了得到一个 (其中有一方法),你需要来匹配字符串(图案line使用) (或取决于你的需要):

>>> pattern.search('CreationDate="2013"')
<_sre.SRE_Match object at 0x7fac5c64e8a0>
>>> pattern.search('CreationDate="2013"').group(1)  # returns a string
'2013'

Creation_date = re.compile('CreationDate="([0-9]+)"')

def mapper(self, _, line):
    date_only = Creation_date.search(line), group(1)
    if int(date_only) > 2013:
       yield None, 1

注意:修改了正则表达式以将数字部分捕获为一个组。 并将匹配的字符串转换为int(与数字2013比较的字符串没有意义,或者根据Python版本引发异常)

Creation_date只是一个正则表达式。

您需要先匹配输入字符串,然后才能呼叫group(0)

  相关解决方案