日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)

發布時間:2023/12/2 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中實現. 例子 &lt ...

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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。