我正在学习python,所以对于很多人来说这可能是一个简单的问题,我希望能帮助你理解出错的地方。
我正在尝试创建一个在文本中搜索电话号码的功能。
import re
def findPhoneNumber(a):
b = re.compile(r'\d{3}-\d{3}-\d{4}')
c = b.search(a)
return c.group()
findPhoneNumber('123')
我收到此错误: AttributeError:' NoneType'对象没有属性' group'
因此,根据我的理解,c变量没有获得任何关联的值,因此返回此错误。
有谁能解释我在这里做错了什么?
答案 0 :(得分:4)
您的示例“123”与任何电话号码都不匹配,您需要“123-456-7890”。
所以在你的例子中c==None
。在尝试访问c
之前,您必须先测试if(c)
是否为c.group()
的实际匹配对象
答案 1 :(得分:2)
如果你的正则表达式与c
不匹配,None
会给你下一个例外:
AttributeError: 'NoneType' object has no attribute 'group'
您只需要处理该异常
def findPhoneNumber(a):
try:
return re.search(r'\d{3}-\d{3}-\d{4}', a).group()
except AttributeError:
return None
在函数内部编译正则表达式只使用一次
也没什么意义