3.1 正则表达式
解决s字符串分割问题,最简单的方法就是使用re.split方法
import re
s = 'ab;cd|efg|hi,jklmn\topq;rst;uvw\txyz'
print(re.split('[,;|\t]+', s))
多个分隔符可以使用[]来括起来,然后+是匹配前一个字符一次或者多次时。
这样操作的结果就是['ab', 'cd', 'efg', 'hi', 'jklmn', 'opq', 'rst', 'uvw', 'xyz']
3.2 匹配开头或结尾多个参数
startswith和endswith的所匹配的参数可以是多个,但是必须是用元组表示的。
a = "a.sh"
b = "b.py"
c = "c.cpp"
l = [a, b, c]
print([x for x in l if x.endswith((".sh", ".py"))])
['a.sh', 'b.py']
3.3 正则表达式分组匹配替换
将"2017-10-26"转换成"10/26/2017",比较简便的方法是通过re的sub分组捕获,然后替换成其他字符串格式。
import re
day = "2017-10-26"
print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', day))
print(re.sub('(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',
r'\g<month>/\g<day>/\g<year>', day))
3.4 字符串拼接
字符串拼接主要是通过join方法,这里介绍一下特殊情况,a = ["abc", 123, 456, "def"],这时如果直接使用join,数字不是可迭代对象会报错。比较好的解决办法是将其用生成器的方式作为join的参数。
a = ["abc", 123, 456, "def"]
print("".join(str(x) for x in a))
网友评论