比方说,我有一个首选的解决方案来处理异常。
但有时仍然会出现异常,我不得不使用第二种不太受欢迎的解决方案。
我使用如下代码,它可能看起来不太酷。如果有更好的做法,请指教。
try:
print(undefined_varible)
except NameError:
try:
print("1st attempt to handle NameError exception")
except NameError:
print("2nd attempt to handle NameError exception")
更新:
这是我的一段真实代码
import re
def find_phone(text):
try:
pattern = re.compile(r"(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?")
#search for a phone number
mo = pattern.search(text)
phone = mo.group()
print (phone)
except AttributeError:
try:
#don't want to use this pattern always because it's too wide and not perfect
pattern = re.compile(r"(?:\+?(\d{1,3}))?[-. (]*(\d{1,3})[-. )]*(\d{1,3})[-. ]*(\d{1,4})([-. ]*(\d{1,4}))?([-. ]*(\d{1,4}))?(?: *x(\d{1,4}))?")
mo = pattern.search(text)
phone = mo.group()
print (phone)
except AttributeError:
print("phone number has not been found")
find_phone("here is the weird formatted phone number: +33 6 29 37 24 57")
请您参考如下方法:
假设您有多种方法来检查电话号码。一个想法是在你的函数中有一个计数器,并通过 if 语句选择要尝试的计数器
import re
def find_phone(text):
number_of_cases = 2
i = 0
while i < number_of_cases
try:
if i == 0:
pattern = re.compile(r"(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?")
#search for a phone number
mo = pattern.search(text)
phone = mo.group()
print (phone)
elif i == 1:
#don't want to use this pattern always because it's too wide and not perfect
pattern = re.compile(r"(?:\+?(\d{1,3}))?[-. (]*(\d{1,3})[-. )]*(\d{1,3})[-. ]*(\d{1,4})([-. ]*(\d{1,4}))?([-. ]*(\d{1,4}))?(?: *x(\d{1,4}))?")
mo = pattern.search(text)
phone = mo.group()
print (phone)
except AttributeError:
i += 1
else: break
另一个想法是检查您是否找到了电话号码
