re模塊、xpath

re模塊的高級用法

search:

search 方法用于查找字符串的任何位置,它也是一次匹配,只要找到了一個(gè)匹配的結(jié)果就返回,而不是查找所有匹配的結(jié)果,它的一般使用形式如下:

當(dāng)匹配成功時(shí),返回一個(gè) Match 對象,如果沒有匹配上,則返回 None。

需求:匹配出文章閱讀的次數(shù)

 #coding=utf-8
import re

 ret = re.search(r"\d+", "閱讀次數(shù)為 9999")
ret.group()

運(yùn)行結(jié)果:

'9999'

findall

上面的 match 和 search 方法都是一次匹配,只要找到了一個(gè)匹配的結(jié)果就返回。然而,在大多數(shù)時(shí)候,我們需要搜索整個(gè)字符串,獲得所有匹配的結(jié)果。

  • findall 方法的使用形式如下:

findall 以列表形式返回全部能匹配的子串,如果沒有匹配,則返回一個(gè)空列表。

需求:統(tǒng)計(jì)出python、c、c++相應(yīng)文章閱讀的次數(shù)

#coding=utf-8
import re

ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
print(ret)

運(yùn)行結(jié)果:

['9999', '7890', '12345']

sub

sub 方法用于替換。它的使用形式如下:

需求:將匹配到的閱讀次數(shù)加1

方法1:

#coding=utf-8
import re

ret = re.sub(r"\d+", '998', "python = 997")
print(ret)

運(yùn)行結(jié)果:

python = 998
方法2:

#coding=utf-8
import re

def add(temp):
    strNum = temp.group()
    num = int(strNum) + 1
    return str(num)

ret = re.sub(r"\d+", add, "python = 997")  
print(ret)

ret = re.sub(r"\d+", add, "python = 99")
print(ret)

運(yùn)行結(jié)果:

python = 998
python = 100

split

根據(jù)匹配進(jìn)行切割字符串,并返回一個(gè)列表

需求:切割字符串“info:xiaoZhang 33 shandong”

#coding=utf-8
import re

ret = re.split(r":| ","info:xiaoZhang 33 shandong")
print(ret)

運(yùn)行結(jié)果:

['info', 'xiaoZhang', '33', 'shandong']

finditer

finditer方法的行為跟 findall 的行為類似,也是搜索整個(gè)字符串,獲得所有匹配的結(jié)果。但它返回一個(gè)順序訪問每一個(gè)匹配結(jié)果(Match 對象)的迭代

import re
ret = re.finditer('ha',baseStr)
print(type(ret))  
print(ret)

for item in ret:
    print(type(item))
    print(item.group())

結(jié)果: <class 'callable_iterator'> <callable_iterator object at 0x7fb06cc15828> <class '_sre.SRE_Match'> ha <class '_sre.SRE_Match'> ha <class '_sre.SRE_Match'> ha <class '_sre.SRE_Match'> ha <class '_sre.SRE_Match'> ha <class '_sre.SRE_Match'> ha

xpath

XPath (XML Path Language) 是一門在 XML 文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進(jìn)行遍歷。

  • XML 指可擴(kuò)展標(biāo)記語言(EXtensible Markup Language)
  • XML 是一種標(biāo)記語言,很類似 HTML
  • XML 的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
  • XML 的標(biāo)簽需要我們自行定義。
  • XML 被設(shè)計(jì)為具有自我描述性。
  • XML 是 W3C 的推薦標(biāo)準(zhǔn)

具體使用請見[多線程]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • re模塊手冊 本模塊提供了和Perl里的正則表達(dá)式類似的功能,不關(guān)是正則表達(dá)式本身還是被搜索的字符串,都可以...
    喜歡吃栗子閱讀 4,184評論 0 13
  • 正則表達(dá)式(regular expression)是可以匹配文本片段的模式。最簡單的正則表達(dá)式就是普通字符串,可以...
    虛心的鋤頭閱讀 320評論 0 0
  • 為什么要學(xué)正則表達(dá)式 實(shí)際上爬蟲一共就四個(gè)主要步驟: 明確目標(biāo) (要知道你準(zhǔn)備在哪個(gè)范圍或者網(wǎng)站去搜索) 爬 (將...
    彡廿閱讀 901評論 0 1
  • 1,概述 給定一個(gè)正則表達(dá)式和另一個(gè)字符串,我們可以達(dá)到如下的目的: 1,給定的字符串是否符合正則表達(dá)式的過濾邏輯...
    曉可加油閱讀 761評論 0 1
  • 前幾天,朋友圈里看到他曬結(jié)婚證的照片,一直想寫點(diǎn)什么,趁著這個(gè)有點(diǎn)涼的晚上,記錄一下吧。 我們是高中同學(xué),到今年認(rèn)...
    兔哩yh閱讀 342評論 2 1

友情鏈接更多精彩內(nèi)容