02 re模块
# re的工作是在python中執行正則表達式
import re# # find
# result = re.findall("\d+", "baby的電話號是: 185123456789")
# print(result)
#
# it = re.finditer("\d+", "baby123456789的電話號是: 185123456789")
# for el in it:
# print(el.group()) # 分組# search 搜索, 查找
# 一旦匹配到結果. 直接返回, 如果匹配不到結果. 返回None
# result = re.search("\d", "寶寶的電話是")
# print(result)
# print(result.group())# 匹配, 從頭開始匹配. 相當于在你正則前面加了一個^
# result = re.match("\d+", "157寶寶的電話是:")
# print(result.group())# search和match的區別: search查找. 找到了結果就返回. match. 從頭開始匹配.# # 坑: 爬蟲的一個重點
# # .*?
# result = re.finditer(r"姓名:(?P<name>.*?), 愛好:(?P<hobby>.*?),", "姓名:寶寶, 愛好:女,")
# for el in result:
# print(el.group("name"), el.group("hobby"))# # 正則的常用操作
# result = re.split("\d+", "寶寶110來找你了. 你回頭收拾收拾去119報道")
# print(result)# 用正則替換
# s = re.sub("\d+", "__sb__", "寶寶110來找你了. 你回頭收拾收拾去119報道")
# print(s)# s = re.subn("\d+", "__sb__", "寶寶110來找你了. 你回頭收拾收拾去119報道") # 替換了xxx次
# print(s)# code = "for i in range(10): print(i)"
#
# c = compile(code, "", "exec") # 編譯
#
# exec(c) # 快速執行# reg = re.compile(r"\d+") # 編譯了一段正則. 加載了一段正則
# lst = reg.findall("呵呵, 寶寶才不去110呢.他要去120了")
# print(lst)
#
# re.findall(r"\d+", "呵呵, 寶寶才不去110呢.他要去120了")# lst = re.findall(r"a(?:\d+)c", "a123456c") # 把括號python中的分組變成了原來正則表達式中的分組
# print(lst)# # 爬取電影天堂
from urllib.request import urlopencontent = urlopen("https://www.dytt8.net/html/gndy/dyzz/20181219/57954.html").read().decode("gbk")
# print(content)reg = r'<div id="Zoom">.*?片 名(?P<name>.*?)<br />◎年 代(?P<years>.*?)<br />.*?◎上映日期(?P<date>.*?)<br />'+ \
'.*?◎主 演(?P<main>.*?)◎簡 介.*?<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(?P<download>.*?)">'
it = re.finditer(reg, content, re.S) # re.S 去掉.里面的\n
for el in it:print(el.group("name"))print(el.group("years"))print(el.group("date"))print(el.group("main").replace("<br /> ", ", "))print(el.group("download"))
轉載于:https://www.cnblogs.com/work14/p/10192787.html
總結
- 上一篇: k8s 重点
- 下一篇: LeetCode第14题:最长公共前缀