我不熟悉python扩展正则表达式。我试图创建一个小型python正则表达式项目,但遇到了一个问题。我在试着做一个电话号码检查器。如果您输入正确的号码,您将收到一封“谢谢”,但如果您输入随机号码(不是电话号码)或随机信函,则您将收到一封“重试”
问题是,如果我输入一个字母,那么我会收到一个AttributeError:“非类型”对象没有属性“组”。
我怎样才能解决这个问题?任何帮助都很好! 谢谢你花时间阅读这篇文章
Pastebin:https://pastebin.com/VzWMDgiU
代码:
import re
import time
print('Welcome, you have won 1 million dollars! Please verify your phone number!')
time.sleep(2)#sleep
content = input('Please enter your number:')
numberRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
result = numberRegex.search(content)
result.group()
time.sleep(3)#sleep
if result.group() == content:
print('thank you')
if result.group() != content:
print('try again')
这是一个解决方案:
另一个解决方案是处理异常的try/catch块
我猜它永远不会涉及到代码的这一部分:
但我暂时保留了它,因为我不太熟悉python的正则表达式库
这是一个辅助或外围答案。
根据您的问题,我假设您对所使用的工具有一定程度的理解,因此我认为以下内容可能对您有很大帮助
Regex已经很难阅读了,我建议通过使用repeats的模式使它更容易阅读
而不是使用模式
如果你确定某个特定的实例的数量 数字会重复, 为什么不使用:
模式
\d{n}
意味着正则表达式将寻找重复次数n的数字\d
和另一个
再加上其他人的答案,让你更仔细地研究一下,我认为你所经历的那种错误的术语是semantic error。您的程序正在做它应该做的事情,但可能您对regex函数/方法的工作方式缺乏了解,这就是为什么您没有“捕获”在实际输入与预期输入不同时生成的异常错误
附言。 在进行此项工作时,请尝试研究Python的命名约定 与其
numberRegex
,不如number_regex
source相关问题 更多 >
编程相关推荐