Python常用异常处理
Python常用异常处理
- 自定义异常处理接口返回值
-- for循环处理接口数据
假定匹配接口里的 手机号码,将自定义异常丢入想要数据里列表。
import re
def process_data(data_list):
list_str = []
for data in data_list:
try:
# 使用正则表达式匹配手机号码,以1开头,后面跟着10个数字
pattern = r'^1\d{10}$'
if re.match(pattern, data):
# 如果数据符合手机号码的匹配规则,将其添加到 list_str 列表中
list_str.append(data)
else:
# 如果数据不是手机号码,抛出自定义异常
raise ValueError("这个数据不是手机号码")
except ValueError as ve:
# 捕获自定义异常,并将异常信息添加到 list_str 列表中
list_str.append(str(ve))
return list_str
# 测试数据
data_list = ["15812345678", "13298765432", "12345678900", "18888888888", "hello world"]
result_list = process_data(data_list)
print(result_list)
按照异常处理的标准写法 处理上述问题
import re
def process_data(data_list):
list_str = []
for data in data_list:
try:
# 使用正则表达式匹配手机号码,以1开头,后面跟着10个数字
pattern = r'^1\d{10}$'
if re.match(pattern, data):
# 如果数据符合手机号码的匹配规则,将其添加到 list_str 列表中
list_str.append(data)
else:
# 如果数据不是手机号码,抛出自定义异常
raise ValueError("这个数据不是手机号码")
except ValueError as ve:
# 捕获自定义异常,并将异常信息添加到 list_str 列表中
list_str.append(str(ve))
else:
# 没有异常发生时执行的代码
# 这里可以放一些处理成功情况的逻辑
pass
finally:
# 无论是否发生异常,都会执行的代码
# 这里可以放一些清理工作的逻辑
pass
return list_str
# 测试数据
data_list = ["15812345678", "13298765432", "12345678900", "18888888888", "hello world"]
result_list = process_data(data_list)
print(result_list)
正则匹配中的所有规则
正则表达式规则和用法
在 Python 语言中,正则表达式的功能由 `re` 模块提供。以下是在 Python 中使用正则表达式的一些常见规则和解释:
1. `re.compile(pattern)`
- 解释:用于将正则表达式的字符串模式编译成正则对象,以便后续复用匹配。
- 示例:`pattern = re.compile(r'\d{3}-\d{2}-\d{4}')`
2. 字符匹配:
- `.`:匹配任意一个字符(除了换行符)。
- `\d`:匹配任意数字,等同于`[0-9]`。
- `\D`:匹配任意非数字字符,等同于`[^0-9]`。
- `\w`:匹配任意字母、数字或下划线,等同于`[a-zA-Z0-9_]`。
- `\W`:匹配任意非字母、数字或下划线字符,等同于`[^a-zA-Z0-9_]`。
- `\s`:匹配任意空白字符,包括空格、制表符、换行符等。
- `\S`:匹配任意非空白字符。
3. 重复匹配:
- `*`:匹配前面的字符零次或多次。
- `+`:匹配前面的字符一次或多次。
- `?`:匹配前面的字符零次或一次。
- `{m}`:匹配前面的字符恰好出现 m 次。
- `{m, n}`:匹配前面的字符出现 m 到 n 次。
4. 特殊字符:
- `^`:匹配字符串的开始位置。
- `$`:匹配字符串的结束位置。
- `\b`:匹配单词的边界。
5. 分组和捕获:
- `()`:创建一个匹配组,用于对子表达式进行分组。
- `(?P<name>pattern)`:创建一个命名捕获组。
- `(?P=name)`:引用前面命名捕获组匹配到的内容。
6. 选择符:
- `|`:用于在多个模式中选择一个匹配。
7. 边界匹配:
- `\b`:匹配单词边界。
8. 模式修饰符:
- `re.I`:忽略大小写匹配。
- `re.M`:多行匹配。
- `re.S`:让 `.` 匹配任意字符,包括换行符。
- `re.X`:忽略模式中的空白和注释。
- `re.A`:ASCII 匹配模式。
示例:
```python
import re
pattern = re.compile(r'\d{3}-\d{2}-\d{4}')
result = pattern.match('123-45-6789')
if result:
print("匹配成功")
else:
print("匹配失败")
```
以上是一些在 Python 中常见的正则表达式规则和用法。使用 `re` 模块时,需要根据具体的需求和字符串模式来灵活使用这些规则。