异常捕获
高级语言通常都内置了一套try…except…finally…的错误处理机制,Python也不例外。而且只要在合适的层次去捕获错误就可以了。
def foo(s):
return / int(s)
def bar(s):
return foo(s) *
def main():
try:
bar('0')
except Exception as e:
print('Error:', e)
finally:
print('finally...')
一般可以选择Python内置的错误类型(比如ValueError,TypeError),只有在必要的时候才定义我们自己的错误类型。捕获了异常,打印一个ValueError!后,再把错误通过raise语句抛出去,这种处理方式相当常见,由于当前函数不知道应该怎么处理该错误,所以,最恰当的方式是继续往上抛,让顶层调用者去处理。
raise语句如果不带参数,就会把当前错误原样抛出。如果在except中raise一个Error,就可以把一种类型的错误转化成另一种类型:
def foo(s):
n = int(s)
if n==:
raise ValueError('invalid value: %s' % s)
return / n
def bar():
try:
foo('0')
except ValueError as e:
print('ValueError!')
raise
bar()
日志处理
logging的好处:它允许你指定记录信息的级别,而且一条语句可以同时输出到不同的地方,比如console和文件。
import logging
logging.basicConfig(level=logging.INFO)
s = '0'
n = int(s)
logging.info('n = %d' % n)
print / n)
正则表达式
1、常用表达式定义:
用
\d
可以匹配一个数字
\w
可以匹配一个字母或数字
\s
可以匹配一个空格(也包括Tab等空白符)
用
*
表示任意个字符(包括0个)
用
+
表示至少一个字符
用
?
表示0个或1个字符
用
{n}
表示n个字符
用
{n,m}
表示n-m个字符
.
可以匹配任意字符
^表示行的开头,
^\d
表示必须以数字开头。
$
表示行的结束,
\d$
表示必须以数字结束。
2、特殊字符
若要匹配特殊字符,必须首先使字符”转义”,即,将反斜杠字符\ 放在它们前面。特殊字符包括
$,{},(),[],*,+,.,^,|,\,?
3、re模块
Python提供
re
模块,包含所有正则表达式的功能。强烈建议使用Python的r前缀,就不用考虑转义的问题了:
import re
re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
常见的判断方法就是:
test = '用户输入的字符串'
if re.match(r'正则表达式', test):
print('ok')
else:
print('failed')
4、切分字符串:
re.split(r'[\s\,\;]+', 'a,b;; c d')
先编译生成正则表达式对象再匹配
import re
re_telephone = re.compile(r'^(\d{4})-(\d{5,11})$')
re_telephone.match('0571-8675764').groups()