我需要确定传递给函数的参数是否是正则表达式匹配类型。目前我有:
re_type = type(re.compile(''))
def func(result):
if isinstance(result, re_type):
print("re")
然而,我永远无法打印出来。当我打印结果时,我得到:
<_sre.SRE_Match object at 0x7fed5330>
是否有更简单的方法来识别这个对象?
答案 0 :(得分:2)
将第一行更改为:
re_type = type(re.match('', ''))
目前,您将re_type设置为正则表达式的类型,而不是通过应用正则表达式来输入的匹配。
另请注意,如果没有匹配项,re模块将返回None,因此如果您的函数实际上只需要匹配类型或None,那么您可能只会这样做:
def func(result):
if result:
# do stuff...
最后,您可能违反了Python的EAFP principle。最后一个版本假设结果是匹配类型,除非有什么中断...
def func(result):
try:
for group in result.groups():
# handle match group
except AttributeError:
# Looks like this wasn't a real match object