python中search用法_Python 正则表达式(高级用法)- search、findall、sub 、split

仅供学习,转载请注明出处

re模块的高级用法

search

需求:匹配胖子老板说出的香烟价格In [95]: re.search(r"\d+","胖子老板:一包蓝利群17元啦").group()

Out[95]: '17'

In [96]:

findall

前面寻找smoke的故事中,我用来最终解决胖子老板的smoke次数寻找问题。

因为findall找出来返回的是一个list,那么只要用len()方法就可以知道次数了。In [96]: str1 = "asdjkasldkjsmokelaksjdklasjdlasmokel;kajsdlkjasdsmoke"

In [97]: ret = re.findall(r"smoke",str1)

In [100]: print(ret)

['smoke', 'smoke', 'smoke']

In [101]: print(len(ret))

3

In [102]:

sub 将匹配到的数据进行替换

例如将上面的smoke进行替换为helloIn [104]: ret = re.sub(r"smoke","hello",str1)

In [105]: print(ret)

asdjkasldkjhellolaksjdklasjdlahellol;kajsdlkjasdhello

In [106]:

这种替换在爬虫的时候,我经常用来拼接替换图片的url地址这类的事项。

还有一个有趣的方式,修改的地方可以使用函数方法,如下:需求:将匹配到的 整数+1#coding=utf-8

import re

def add(temp):

strNum = temp.group()

num = int(strNum) + 1

return str(num)

ret = re.sub(r"\d+", add, "python = 997")

print(ret)

ret = re.sub(r"\d+", add, "python = 99")

print(ret)

运行结果:python = 998

python = 100

split 根据匹配进行切割字符串,并返回一个列表#coding=utf-8

import re

# 使用冒号进行切割

In [106]: ret = re.split(r":","胖子老板:一包烟17元啦")

In [107]: print(ret)

['胖子老板', '一包烟17元啦']

# 那么能不能根据多个条件进行切割呢?

In [108]:

# 使用 | 增加切割条件,这里我增加了 \s 空格或者tab的切割。

In [108]: ret = re.split(r":|\s","胖子老板:一包烟17元啦 肥仔白: 这么贵啊!")

In [109]: print(ret)

['胖子老板', '一包烟17元啦', '肥仔白', '', '这么贵啊!']

In [110]:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值