使用regex表达式,我创建了一个必须满足某些条件(ex/不允许空白)的函数,并生成一个由特殊字符分隔的元组
输入一个“hello!世界!hola'应该产生一个元组('hello'、'world'、'hola')
如果字符串不符合我的条件,我想引发ValueError。但是,如果字符串不符合我的条件,我的代码将调用AttributeError。为什么函数不能正确调用异常
我试图调用ValueError,但函数似乎没有捕获我的异常
def produce_tupule (s):
re_pair = re.compile(r'''^
([a-zA-Z0-9._+-]+)
\!
([a-zA-Z0-9._+-]+)
\!
([a-zA-Z0-9._+-]+)
$
''',
re.VERBOSE)
try:
return (re_pair.match(s).groups())
except ValueError as e:
print(e)
我期望product\u tupule的输出('你好!世界!hola')导致ValueError消息,因为字符串中存在空格
但是,错误消息指向“return:(re\u pair.match(s).groups())”行并打印出AttributeError: 'NoneType' object has no attribute 'groups'
是什么导致函数无法捕获异常并生成AttributeError
如果给定的正则表达式与您的输入不匹配,则
re.match
返回None而不是ValueError
。然后,您的代码尝试访问None
返回值的.groups
成员,返回值以AttributeError
失败如果要在给定的正则表达式不匹配时引发
ValueError
,则必须显式地用带有显式错误检查的代码替换return (re_pair.match(s).groups())
行:相关问题 更多 >
编程相关推荐