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