モジュールのユースケースについて

前の言葉で書かれています:
reモジュールには多くの関数がありますが、次の3つ:
re sub、re.findall、re.matchこれらの3つのコマンドは
クローラーで頻繁に使用されますRe sub、reはクローラーでよく使用されます.findall、re.matchデータのクリーニングと抽出については、必ずこれら3つのコマンドをマスターしてください。

次に、re.sub、re.finadll、re.matchの使用と、対応する出力結果をトレーニングおよび習得するためのいくつかの小さなケースを示します。

  1. findall:抽出->コアは何を抽出するかです(正規表現を定義し、どこに進むか)
  2. サブ:交換->コアは、交換するオブジェクト、交換するもの、および続行する場所にあります
  3. 一致:一致->コアは、一致するものと一致する場所にあります
with open('index.html','r',encoding='utf-8') as f:
    html=f.read()
    print(html)

htmlの出力結果は次のとおりです。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <footer>
        <div>
            <div class="email">
                Email:kefu@CSDN.net
            </div>
            <div class="tel">
                手机号:400-660-0108
            </div>
        </div>
    </footer>
</body>
</html>
# 定义一个提取email的正则表达式
#先导入re 模块
import re
pattern_1='<div class="email">(.*?)</div>' #匹配div标签里面的class="email"
ret_1=re.findall(pattern_1,html)  # 用正则表达式,在html中去提取
print(ret_1)   # 但提取的结果为一个空列表,原因在于,.匹配除了换行符意外的所有字符
## 因此先过滤掉\n,过滤\n  使用re.sub()
html_s=re.sub('\n','',html)
print(html_s)
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>    <footer>        <div>            <div class="email">                Email:kefu@CSDN.net            </div>            <div class="tel">                手机号:400-660-0108            </div>        </div>    </footer></body></html>
## 过滤掉\n后,再进行提取操作即findall
ret_2=re.findall(pattern_1,html_s)
print(ret_2)
['                Email:[email protected]            ']
## 如上显示的结果前尾都有空格的列表,通过取列表的索引0,在通过strip()函数能够去掉收尾的空白
print(ret_2[0].strip())  # 如下显示即为提取到的邮箱地址,就是我们想要提取的数据
Email:kefu@CSDN.net
###  定义一个匹配密码的正则表达式
###注意前面加一个^是为了防止被转义
password_pattern=r'^[a-zA-Z0-9_]{5,15}$' # 该密码以字母、数字或者下划线为开头,长度为6-16位
pass1='1234567'
pass2='k123456'
pass3='k123'
print(re.match(password_pattern,pass1))
print(re.match(password_pattern,pass2))
print(re.match(password_pattern,pass3))
<re.Match object; span=(0, 7), match='1234567'>
<re.Match object; span=(0, 7), match='k123456'>
None

経験:
re.sub、re.findall、re.matchこれらの3つのコマンド
は、データクリーニング、抽出、クローラーでよく使用されます。
これら3つのコマンドをマスターしてください

おすすめ

転載: blog.csdn.net/weixin_42961082/article/details/109786080