python技巧

python小技巧:

1.强烈建议使用Python的r前缀,就不用考虑转义的问题了。

2.正则表达式的使用:

test = '用户输入的字符串'
if re.match(r'正则表达式', test):
    print('ok')
else:
    print('failed')

3.如果用户输入了一组标签,下次记得用正则表达式来把不规范的输入转化成正确的数组。

 re.split(r'[s\,;]+', 'a,b;; c  d')
['a', 'b', 'c', 'd']

4.凶残的例子:

1 >>> t = '19:05:30'
2 >>> m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9]):(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
3 >>> m.groups()
4 ('19', '05', '30')

5.

编译

当我们在Python中使用正则表达式时,re模块内部会干两件事情:

  1. 编译正则表达式,如果正则表达式的字符串本身不合法,会报错;

  2. 用编译后的正则表达式去匹配字符串。

如果一个正则表达式要重复使用几千次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配:

1 >>> import re
2 # 编译:
3 >>> re_telephone = re.compile(r'^(d{3})-(d{3,8})$')
4 # 使用:
5 >>> re_telephone.match('010-12345').groups()
6 ('010', '12345')
7 >>> re_telephone.match('010-8086').groups()
8 ('010', '8086')

编译后生成Regular Expression对象,由于该对象自己包含了正则表达式,所以调用对应的方法时不用给出正则字符串。

原文地址:https://www.cnblogs.com/xiaohaillong/p/5896689.html