Python爬蟲基礎——re模塊的提取、匹配和替換


re是Python的一個第三方庫。
為了能更直觀的看出re的效果,我們先新建一個HTML網頁文件(可直接復制):
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <footer>
        <div>
            <div class="email">
                Email:re@qq.com
            </div>
            <div class="tel">
                手機號:88888888
            </div>
        </div>
    </footer>
</body>
</html>

## OK,然后我們進入主題。

re主要有三個功能:提取、匹配、替換。

1、提取findall:

re.findall(【正則表達式】, 【被提取的字符串】)
注意:返回的類型是列表


我們應如何取出上文index.html中的Email或者手機號呢:

import re

with open('index.html', 'r', encoding='utf-8') as f:
    # 讀取index.html
    html = f.read()
    # 把html中的換行符,去掉,也就是替換成空字符串,因為.不能匹配到換行符
    html = re.sub('\n', '', html)
    print(html)
    # 定義正則表達式,注意括號
    pattern_1 = '<div class="email">(.*?)</div>'
    # re.findall(【正則表達式】,【被提取的字符串】),返回類型是列表
    ret_1 = re.findall(pattern_1, html)
    # 字符串.strip(),可以去除首位的空格和換行符
    print(ret_1[0].strip())

2、匹配match:

re.match(【正則表達式】, 【被匹配的字符串】)
注意:
如果匹配成功,返回<class 're.Match'>對象;
如果匹配不成功,返回None。


我們應如何編寫定義密碼的正則表達式呢:

import re

# 英文字母開頭,可包括應為字母,數字、下划線,總位數6-16位
password_pattern = r'^[a-zA-Z][a-zA-Z0-9_]{5,15}$'
# 定義三個密碼
pass1 = '1234567'
pass2 = 'k123456'
pass3 = 'k123'
# 打印測試結果,匹配成功返回re.Match對象,不成功返回None
print(re.match(password_pattern, pass1))
print(re.match(password_pattern, pass2))
print(re.match(password_pattern, pass3))

輸出結果為:
在這里插入圖片描述

3、替換sub:

re.sub(【正則表達式】, 【替換成的字符串】, 【被匹配的字符串】)
覺得沒看過sub的同學,那只能說明你看筆記不認真了,示范代碼請看上上文~~



為我心愛的女孩~~



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM