python中三大数据提取方法(3)----正则表达式re库

1.什么是正则表达式?

正则就是特定的规则对数据进行过滤,拿到我们想要的数据。在python中爬虫提取数据时re是万能的,所有的数据都可以使用re进行提取。

python正则表达式的使用要借助re模块,安装方法:pip install re

2.正则表达式语法规则

 3.举例说明

# 取出字符串中的整数
str1 = "num12name2age15title666"
re.findall("\d",str1)   
# print结果为["12","2","15","666"]


4.常见的使用方法

#从头找一个
re.match()

#找一个
re.search()

#找所有
re.findall()

#替换
re.sub()

#编译
re.compile()

5.python中原始字符串r的用法

原始字符串定义(raw string):所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符,原始字符串往往针对特殊字符而言。例如"\n"的原始字符串就是"\\n",如果提取的数据中有"\"要在双引号前面加上r转译

6.匹配中文

在某些情况下,我们想匹配文本中的汉字,有一点需要注意的是,中文的 unicode 编码范围 主要在 [u4e00-u9fa5],这里说主要是因为这个范围并不完整,比如没有包括全角(中文)标点,不过,在大部分情况下,应该是够用的。假设现在想把字符串 title = u'你好,hello,世界' 中的中文提取出来,可以这么做:

import re
# 注意点: 中文匹配 需要设置unicode字符才可以匹配

title = u'你好,hello,世界'
pattern = re.compile(ur'[\u4e00-\u9fa5]+')
result = pattern.findall(title)

print result

7.万能表达式:

爬虫中用到re的时候可以使用,适用百分之90以上的数据提取

例如:

data = "</div>

 
<h3 class="product-title">
<a href="//chaoshi.detail.tmall.com/item.htm?id=563432946975&amp;rewcatid=51456012" target="_blank"
atpanel="40,563432946975,50012392,919380521,spu,1,spu,">
  【<span class=H>进口</span>】荷兰荷高有机奶全脂<span class=H>纯</span><span class=H>牛奶</span>整箱1L*6盒装送礼礼盒
</a>
</h3>
   <div class="item-summary">
 <div class="item-sum">
   <span>总销量:</span>
 <strong>14233</strong>
     </div>"
# 提取出总销量
"""
1.复制出需要的数据前后这里是总销量:</span><strong>14233</strong></div>"
2. 将需要的数据替换成(.*?)
"""
re.findall("<strong>(.*?)</strong>")

8.遇到字符串中带()怎么办?

将圆括号放入中括号中,例如:

str1 = windoes__("data":['erte','ertert','ertet','uyty'])
# 提取出字符串中的列表
re.findall("windoes__[(]"data":"(.*?)[)])

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不喜欢穿格子衫的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值