re模块

re模块

正则表达式

正则表达式是一门独立的,任何语言都可以使用正则表达式,是由一堆特殊的字符组合而来

  • 字符组

    [0-9] :匹配0-9之间的任意字符

    [9-0] : 报错, 必须从小到大

    [a-z] : 小写的a-z之间的字母

    [A-Z] : 大写的A-Z之间的字母

    [z-A] : 错误, 只能从小到大

    [A-z] : 从大写的A到小写的z,根据ascii表来匹配对应的值。

    注意:顺序必须要按照ASCII码表数值的顺序编写

  • 元字符

  • 组合使用

    \w\W : 匹配字母数字下划线与非字母数字下划线,匹配所有

    \d\D : 无论是数字或者非数字都可以匹配

    ^ : startswith '^'在外面使用: 表示开头。 [^]: 表示取反的意思。

    [^ab]: 代表只去ab以外的字符。
    [^a-z]: 取a-z以外的字符。
    

    $ : endswith

    ^$ : 配合使用叫做精准匹配,如何限制一个字符串的长度或者内容

    | : 表示或。ab|abc如果第一个条件成立,则abc不会执行,怎么解决,针对这种情况把长的写在前面就好了,一定要将长的放在前面。

    .* :贪婪匹配

    .*? :非贪婪匹配 ----> 可以做过滤想要获取的数据之前的数据

re模块

在python中若想使用正则表达式,必须通过re模块来实现

为什么要使用正则表达式

想获取某一堆字符串中的某些字符,正则表达式可以帮我们过滤,并提取出我们需要的字符数据

应用场景

爬虫:re、Beautifulsoup4、Xpath、selector

数据分析:re、pandas、numpy...

用户名与密码、手机号输入认证:检测输入的内容合法性

re模块的使用(三种常用方法)

1、.findall('正则表达式', str) :匹配所有的字符串,拿到返回的结果,返回的结果是一个列表

import re
str3 = 'Mr shen 998'
t = re.findall('[A-Za-z0-9]{3}',str3)
print(t) # ['she', '998']

2、.search('正则表达式', str) :在匹配一个字符串成功后,拿到结果后结束,不往后匹配,返回的结果是一个对象

想要提取获取对象中的值,对象.group()得到

import re
str3 = 'Mr shen 998'
t2 = re.search('[A-Za-z0-9]{3}', str3)
print(t2) # <re.Match object; span=(3, 6), match='she'>
print(t2.group()) # she

3、.match('正则表达式', str) :从匹配的字符开头匹配,若开头不是想要的内容,则返回None,匹配成功后返回的结果是一个对象

想要提取获取对象中的值,对象.group()得到

import re
# 手机号认证
while True:
    str1 = input('请输入手机号:').strip()
    # ^ 表示开头
    # | 表示或
    # $ 表示结束
    # (13|14|18)表示获取一个值13或14或18
    # [0-9] 表示限制取值范围
    # {n} 表示获取n个值
    if re.match('^(13|14|15|17|18|19)[0-9]{9}$', str1):
        print('手机号格式正确')
        break
    else:
        print('输入格式不正确')
import re
str2 = 'shen988'
# [A-Za-z0-9] 表示限制取值范围
# {6} 表示取6个值
obj = re.match('[A-Za-z0-9]{6}', str2)
print(obj) # 对象<re.Match object; span=(0, 6), match='shen98'>
print(obj.group()) # shen98
import re
str3 = 'Mr shen 998'
t3 = re.match('[A-Za-z0-9]{2}', str3) # 如果限制取3位则会报错,从头找不到三位
print(t3) # <re.Match object; span=(0, 2), match='Mr'>
print(t3.group()) # Mr

爬虫四部原理

1、发送请求:requests

2、获取响应数据:对方机器直接返回

3、解析并提取想要的数据:re

4、保存提取后的数据:with open()存到文件中

爬虫三步曲:

1、发送请求:requests

2、解析数据

3、保存数据

posted @ 2019-11-19 18:56  Mr沈  阅读(159)  评论(0编辑  收藏  举报