Python:如果声明"如果不是没有"处理

时间:2017-05-22 04:58:07

标签: python regex if-statement error-handling nonetype

我正在使用带有if语句的Python正则表达式:如果匹配为None,那么它应该转到else子句。但它显示了这个错误:

  

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

脚本是:

import string
chars = re.escape(string.punctuation)
sub='FW: Re: 29699' 
if re.search("^FW: (\w{10})",sub).group(1) is not None :
    d=re.search("^FW: (\w{10})",sub).group(1)
else:
    a=re.sub(r'['+chars+']', ' ',sub)
    d='_'.join(a.split())

每一个帮助都是很有帮助的!

1 个答案:

答案 0 :(得分:4)

您的问题是:如果您的搜索没有找到任何内容,它将返回None。您无法执行None.group(1),这就是您的代码所涉及的内容。相反,请检查搜索结果是否为None - 而不是搜索结果的第一个组。

import re
import string

chars = re.escape(string.punctuation)
sub='FW: Re: 29699' 
search_result = re.search(r"^FW: (\w{10})", sub)

if search_result is not None:
    d = search_result.group(1)
else:
    a = re.sub(r'['+chars+']', ' ', sub)
    d = '_'.join(a.split())

print(d)
# FW_RE_29699