提升ValueError不起作用

时间:2018-01-23 01:30:35

标签: python regex

我正在编写一个Python函数来从带有正则表达式的字符串中提取数字。在某些情况下,找不到我正在识别的组(“group1”)。在代码的下一步中,我想排除那些未找到它的情况,否则通过排除我迭代的特定字符来进一步清理数据。如下面的代码所示,尽管尝试同时引发AttributeError或在None的情况下返回None,我仍然会收到以下错误:

if pre_clean.group('group1') is None:
  

AttributeError:'NoneType'对象没有属性'group'

有没有人知道如何在None情况下成功引发错误,否则继续浏览代码?谢谢。

def parse_string(input):

    parse_reg = '''
       ^(?P<group1> \(\d{6}\)\s* 
       [-]*
       (?P<group2>\d{10})
       (?P<group3>\d{2}) '''

    re_parsecmp=re.compile(parse_reg)
    pre_clean = re_parsecmp.match(input)

    'Clean area codes to just digits'
    deletechars='-(*)&' #charts to remove
    if pre_clean.group('group1') is None:
        raise AttributeError
        #return None
    pre_clean2=phone_parts.group('area_code')
    pre_clean3=pre_clean2.strip()
    for char in deletechars:
        pre_clean3 = pre_clean3.replace(char,"")

1 个答案:

答案 0 :(得分:1)

在调用方法之前,您需要首先检查pre_clean

if pre_clean is None or pre_clean.group('group1') is None:
        raise AttributeError

这是自我解释的,你不会遇到你遇到的同样的错误。