有效输入以避免错误(使用re:匹配)

时间:2017-01-25 22:15:01

标签: python regex

我正在尝试检索避免生成错误消息的输出“AttributeError:'NoneType'对象没有属性'group'”。我认为错误是由于“matchObj”的输出为“None”。底部是我的代码。

def processCcDtMdyStamp(datestamp):
    matchObj = re.match(r'^(\d+)/(\d+)/(\d+)\s', datestamp)
    (month, day, year) = (matchObj.group(1), matchObj.group(2), matchObj.group(3))
    return "%s/%s/%s" % (month, day, year)

if __name__ == '__main__':
    print(processCcDtMdyStamp(' 1/6/2015 '))

什么是有效输入(datestamp)而不是'1/6/2015'?  提前谢谢。

1 个答案:

答案 0 :(得分:0)

  • re.match()将在字符串的开头匹配,因此^是多余的。另外,考虑使用re.search()代替,因为模式不限于字符串的开头,你可以匹配数字和斜杠。
  • 因为您的输入在开头有空格且您的模式不是,所以它找不到匹配项。如果可能存在空格,请考虑在模式的开头和结尾使用\s?,或者在应用正则表达式之前修剪空格。
>>> import re
>>> datestamp = ' 1/6/2015 '
>>> matchObj = re.search(r'(\d+)/(\d+)/(\d+)', datestamp)
>>> matchObj.group(1)
'1'