python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)
本篇主頁內容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,貪婪與非貪婪模式
Python爬蟲教程-19-數據提取-正則表達式(re)
正則表達式:一套規則,可以在字符串文本中進行搜查替換等
正則使用步驟:
1.使用 compile 函數將正則表達式的字符串編譯成一個 pattern 對象
2.通過 pattern 對象的一些方法對文本進行匹配,匹配結果是一個 match 對象
3.用 match 對象的方法,對結果進行操作
正則的常用方法:
match:從開始位置開始查找,一次匹配,即1次匹配成功則退出
search:從任何位置開始查找,一次匹配
findall:全部匹配,返回列表
finditer:全部匹配,返回迭代器
split:分割字符串,返回列表
sub:替換
匹配中文
中文是Unicode編碼(utf-8也是Unicode編碼),范圍:主要在[u4e00-u9fa5]
中文全角逗號一類的不在[u4e00-u9fa5]范圍內
貪婪與非貪婪模式
貪婪模式:在整個表達式匹配成功的前提下,盡可能多的匹配
非貪婪模式:在整個表達式匹配成功的前提下,盡可能少的匹配
python里面數量詞默認是貪婪模式
例如:
查找文本abbbbbbbccc
re結果是: ab*
貪婪模式結果是:abbbbbbb
非貪婪模式結果是:a
案例v23 match的基本使用
# 正則結果match的使用案例
import re
# 以下正則分成2個組,以小括號為單位
# [a-z]表示出現小寫a-z任意字母都可以,+表示至少出現1次
# 兩組之間有一個空格,表示匹配的兩個英文字符之間有空格
s = r"([a-z]+) ([a-z]+)"
# 編譯
pattern = re.compile(s, re.I) # s, I表示忽略大小寫
m = pattern.match("Hello world wide web")
# group(0) 表示返回整個匹配成功的字符串,即所有小組
s = m.group(0)
print("所有小組的匹配結果:\n", s)
# 返回匹配成功的整個字符串的跨度,即所有小組
a = m.span(0)
print("所有小組的匹配結果跨度:\n", a)
# group(0) 表示返回的第一個分組匹配成功的字符串
s = m.group(1)
print("第1小組的匹配結果:\n", s)
# 返回匹配成功的整個字符串的跨度
a = m.span(1)
print("第1小組的匹配結果跨度:\n", s)
# groups() 打印出所有的小組,等價于m.group(1), m.group(2)...
s = m.groups()
print(s)
運行結果
從結果可以看到:匹配到兩個小組,一個Hello,一個world,中間的空格是外面的,代碼中包含一些具體的輸出格式
案例v24 search的基本使用
# search的基本使用
import re
s = r'\d+'
pattern = re.compile(s)
# 無參數表示從頭開始查找,到最后結束
m = pattern.search("one12two34three56")
print(m.group(0))
# 參數表明搜查的范圍,例如:10-40
m = pattern.search("one12two34three56", 10, 40)
print(m.group(0))
運行結果
因為是從第10個開始查找,所以查到的是56
案例v25 findall,finditer的基本使用
# findall,finditer的基本使用
import re
s = r'\d+'
pattern = re.compile(s)
m = pattern.findall("I am 18 years old, and 185 high")
print(m)
n = pattern.finditer("I am 18 years old, and 185 high")
print(type(n))
# 迭代器使用for循環輸出
for i in n:
# 只輸出i會包含無用數據
print(i.group())
運行結果
查找所有匹配的字符串
匹配中文
# 中文unicode案例
import re
hello = u'你好,再見陌生人'
# 中文全角逗號一類的不在[u4e00-u9fa5]范圍內
pattern = re.compile(r'[\u4e00-\u9fa5]+')
m = pattern.findall(hello)
print(m)
運行結果
因為中文全角逗號一類的不在[u4e00-u9fa5]范圍內,所在 findall 返回的是一個列表,包含兩個值
- 本筆記不允許任何個人和組織轉載
Python爬蟲教程-24-數據提取-BeautifulSoup4(二)
Python爬蟲教程-24-數據提取-BeautifulSoup4(二) 本篇介紹 bs 如何遍歷一個文檔對象 遍歷文檔對象 contents:tag 的子節點以列表的方式輸出 children:子節 ...
Python爬蟲教程-23-數據提取-BeautifulSoup4(一)
Beautiful Soup是python的一個庫,最主要的功能是從網頁抓取數據,查看文檔 https://www.crummy.com/software/BeautifulSoup/bs4/doc. ...
Python爬蟲教程-25-數據提取-BeautifulSoup4(三)
Python爬蟲教程-25-數據提取-BeautifulSoup4(三) 本篇介紹 BeautifulSoup 中的 css 選擇器 css 選擇器 使用 soup.select 返回一個列表 通過標 ...
Python爬蟲教程-01-爬蟲介紹
Spider-01-爬蟲介紹 Python 爬蟲的知識量不是特別大,但是需要不停和網頁打交道,每個網頁情況都有所差異,所以對應變能力有些要求 爬蟲準備工作 參考資料 精通Python爬蟲框架Scrap ...
Python爬蟲教程-00-寫在前面
鑒于好多人想學Python爬蟲,缺沒有簡單易學的教程,我將在CSDN和大家分享Python爬蟲的學習筆記,不定期更新 基礎要求 Python 基礎知識 Python 的基礎知識,大家可以去菜鳥教程進行 ...
Python爬蟲教程-18-頁面解析和數據提取
本篇針對的數據是已經存在在頁面上的數據,不包括動態生成的數據,今天是對HTML中提取對我們有用的數據,去除無用的數據 Python爬蟲教程-18-頁面解析和數據提取 結構化數據:先有的結構,再談數據 ...
python爬蟲的頁面數據解析和提取/xpath/bs4/jsonpath/正則(1)
一.數據類型及解析方式 一般來講對我們而言,需要抓取的是某個網站或者某個應用的內容,提取有用的價值.內容一般分為兩部分,非結構化的數據 和 結構化的數據. 非結構化數據:先有數據,再有結構, 結構化數 ...
Python爬蟲教程-34-分布式爬蟲介紹
Python爬蟲教程-34-分布式爬蟲介紹 分布式爬蟲在實際應用中還算是多的,本篇簡單介紹一下分布式爬蟲 什么是分布式爬蟲 分布式爬蟲就是多臺計算機上都安裝爬蟲程序,重點是聯合采集.單機爬蟲就是只在一 ...
Python爬蟲教程-33-scrapy shell 的使用
本篇詳細介紹 scrapy shell 的使用,也介紹了使用 xpath 進行精確查找 Python爬蟲教程-33-scrapy shell 的使用 scrapy shell 的使用 條件:我們需要先 ...
隨機推薦
[Amazon] Amazon IAP for Unity
1> 下載amazon IAP3.0 for unity plugin 2> 根據 https://developer.amazon.com/public/apis/earn/in-app ...
R語言XML包的數據抓取
htmlParse 函數 htmlParse加抓HTML頁面的函數. url1
HDU 5013 City Tour
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=5013 題意: 思路: 這里有錯,是Hi(x)=sigama(Hji)(j屬于x) const int ...
MyBatis實現SaveOrUpdate
這篇文章主要講如何通過xml方式實現SaveOrUpdate,但是仍然建議在Service中實現. 例子 < ...
arm get_vector_swi_address
unsigned long* get_vector_swi_addr() { const void *swi_addr = 0xFFFF0008; unsigned ; unsigned ; unsi ...
記錄一下自己用到的python logging
最近想把自己零零散散寫的代碼嵌成一個應用,要考慮到各方面的debug,把logging看了一下,把用到的記下來. 將日志打印到屏幕 import logging logging.debug(u'調試' ...
BLDC(無刷直流電機)應用相關
1.基于XC866的直流無刷電機簡易正弦波控制 http://blog.gkong.com/hushunlin_219521.ashx 2.無刷直流電機的PWM調制方式介紹 http://blog.g ...
Oracle11g靜默安裝
靜默安裝Oracle11G 前期準備 1虛擬機準備: Centos 6.5 64位 內存2G 硬盤30G Cpu 4核 Hostname silent 將安裝包放到/tmp/oracle目錄下 2.軟 ...
Kilani and the Game-擴散形式的搜索
Kilani and the Game 思路:這種擴散走法的并且有速度.我們需要一層一層的入隊, 而且 根據題目要求 按編號處理?例如q1隊列中有 1 1 1 2 2 2 2 3 3 3 3 3 3 ...
深入理解javascript構造函數和原型對象
---恢復內容開始--- 對象,是javascript中非常重要的一個梗,是否能透徹的理解它直接關系到你對整個javascript體系的基礎理解,說白了,javascript就是一群對象在攪..(嗶! ...
總結
以上是生活随笔為你收集整理的python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易电脑版首页入口(网易电脑版首页入口在
- 下一篇: 射手座和天秤座适合在一起吗(射手女和天秤