繁体   English   中英

提高ValueError不起作用

[英]Raise ValueError not working

我正在编写一个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,"")

您需要先对pre_clean进行检查, pre_clean才能对其调用方法

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

这是不言自明的,您不会遇到遇到的相同错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM