正则表达式在Python爬虫、JavaScript、MySQL数据库、数据清洗建模等方面的使用实例

 

注:本文仅列举的实例,基础知识网上一搜一大把,这里不赘述了。

1. Python爬虫中的使用

这里面使用比较简单,作为入门用的,比如爬取CSDN首页的侧边栏的链接与对应名字:

import re

Import requests
def test_csdn_re():
    response = requests.get('https://www.csdn.net/')
    pat = r'<li class=""><a href="(.*?)">(.*?)</a></li>'
    rst_lst = re.compile(pat).findall(response.text)
    print(rst_lst)

可以看出,findall返回是一个列表类型,每一个内容项是一个元祖。

 

2. JS表单验证

此处对经常提交的3个内容 账号、密码、邮箱这三个进行示例

在此处,我们设定账号仅为字母与数字,而密码为任意字符,邮箱为一般规范。

在JS里面,正则使用//括起来。


    <div name='正则表达式'>

       <form onsubmit="return doSubmit()" action="js_study.html" name="re_test" method="post">

            账号:<input type="text" name="uname"/> 8-16位的有效字符<br/><br/>

            密码:<input type="password" name="upass"/> 6-18位的任意字符<br/><br/>

            邮箱:<input type="text" name="email"/> <br/><br/>

            <input type="submit" value="提交"/>

            </form>

            <script type="text/javascript">

            function doSubmit(){

                    var name = document.re_test.uname.value;

                    if (name.match(/^\w{8,16}$/) == null){

                        alert("必须为8-16位的字母或数字!");

                        return false;

                    }



                    var upass = document.re_test.upass.value;

                    if (upass.match(/^.{6,18}$/) == null){

                        alert("必须为6-18的任意字符!");

                        return false;

                    }



                    var email = document.re_test.email.value;

                    if (email.match(/^\w+@\w+(\.\w+){1,3}$/) == null){

                        alert("email error");

                        return false;

                    }

                    alert("验证通过!")

                    return true;

                }

        </script>

</div>

需要注意的是,在email中,后面可能出现多次“.” 比如 hehe@126.com.cn ,所以这次运行出现1-3次。

 

 

3. 在mysql中使用正则表达式

在user表单中,寻找仅含有2个小写字母的name

Mysql> select * from user where name regexp ‘^[a-z]{2}$’

在user表单中,寻找仅含有2个小写字母和2位数字的name

Mysql> select * from user where name regexp ‘^[a-z]{2}[0-9]{3}$’

注意:^$符合必须加上,否则为包含关系(亲可以自己测试下)

 

 

4. 数据清洗建模

我们从网上爬取了大量的数据后,需要获取有益的信息,如图中Out[3]中,从路线信息中我们需要获取旅行项目的天数信息以及价格信息,而从酒店新中我们要获得酒店分数和酒店类型。

假设我们获取的信息保存在*.csv 文件中(文后提供几条数据用于测试)

其中一条CSV信息为:

 

出发地,目的地,路线信息,酒店信息

杭州,丽江,"机酒自由行

丽江5日自由行,入住丽江添富太和休闲度假酒店+接送机,品古城文化,享至尊服务,良辰美景,一网打尽!spa/按摩5天4晚|天天出发|飞机|舒适游1888起/人","4.4高档型"

 

获取这些信息如In[7]所示,可以知道正则表达式还是比较容易获取的,我们把获取的新的信息生成新的字段,如图out[7]所示

怎么样,正则使用领域还是挺广泛的吧,希望这篇博文能拓宽你对正则表达式的视野;

 

 

附几条 CSV 参考信息:

出发地,目的地,路线信息,酒店信息

杭州,丽江,"机酒自由行

丽江5日自由行,入住丽江添富太和休闲度假酒店+接送机,品古城文化,享至尊服务,良辰美景,一网打尽!

spa/按摩

5天4晚|天天出发|飞机|舒适游

1888起/人","4.4分

高档型"

杭州,丽江,"机酒自由行

丽江6日自由行,入住丽江添富太和休闲度假酒店+接送机,品古城文化,享至尊服务,良辰美景,一网打尽!

6天5晚|天天出发|飞机|舒适游

1872起/人","4.4分

高档型"

杭州,丽江,"机酒自由行

丽江+香格里拉 丽江+香格里拉6日自由行,机票+特色客栈,丽江往返+接机

特色客栈

6天5晚|天天出发|飞机|经济游

1517起/人","4.4分

经济型"

杭州,丽江,"机酒自由行

丽江+大理 丽江、大理双城6天自由行,3晚丽江特色客栈,2晚大理洱海边客栈,赠送丽江接机服务,行程自己做主,悠闲假期,彩云之南!

海边客栈特色客栈

6天5晚|天天出发|飞机|经济游

1612起/人","4.4分

经济型"

杭州,丽江,"机酒自由行

丽江5日自由行,入住丽江听心祥和院+接送机

5天4晚|天天出发|飞机|舒适游

1740起/人","4.7分

高档型"

杭州,丽江,"机酒自由行

丽江+泸沽湖6日自由行,机票+特色客栈,丽江往返+接机

特色客栈

6天5晚|天天出发|飞机|经济游

1669起/人","4.4分

经济型"

杭州,丽江,"机酒自由行

丽江+大理 丽江、大理6天5晚自由行,丽江进大理出,不走回头路

6天5晚|飞机|经济游

1703起/人","4.4分

经济型"

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值