pos機(jī)模塊復(fù)網(wǎng),Python爬蟲(chóng)提取神器

 新聞資訊2  |   2023-06-23 17:51  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)模塊復(fù)網(wǎng),Python爬蟲(chóng)提取神器的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)模塊復(fù)網(wǎng)的問(wèn)題,今天pos機(jī)之家(www.rcqwhg.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)模塊復(fù)網(wǎng)

pos機(jī)模塊復(fù)網(wǎng)

python正則表達(dá)式(re模塊)什么是正則表達(dá)式

正則表達(dá)式(Regular Expression)是一種文本模式,包括普通字符(例如,a到z之間的字母)和特殊字符(稱(chēng)為"元字符")。正則表達(dá)式使用單個(gè)字符串來(lái)描述、匹配一系列匹配某個(gè)句法規(guī)則的字符串。

私信小編01即可獲取Python學(xué)習(xí)資料

正則字符簡(jiǎn)單介紹普通字符

普通字符包括沒(méi)有顯示指定為元字符的所有可打印和不可打印字符。這包括所有大寫(xiě)和小寫(xiě)字母、所有數(shù)字、所有標(biāo)點(diǎn)符號(hào)和一些其它符號(hào)

特殊字符

特別字符描述$匹配輸入字符串的結(jié)尾位置。如果設(shè)置了RegExp對(duì)象的Multline屬性,則$也匹配'\'或'\'。()匹配一個(gè)子表達(dá)式的開(kāi)始和結(jié)束位置(匹配括號(hào)中的全部?jī)?nèi)容)。子表達(dá)式可以獲取供以后使用。*匹配前面的子表達(dá)式零次或多次。+匹配前面的子表達(dá)式一次或多次(至少有一次)。.匹配除換行符\之外的任何單詞。[ ]匹配括號(hào)中一個(gè)字符,范圍描述 如[0-9 a-z A-Z]。?匹配前面的子表達(dá)式零次或一次,或指明一個(gè)非貪婪的限定。\\轉(zhuǎn)義字符,如*表示匹配*號(hào)。^匹配字符串的開(kāi)始位置(用在[ ]時(shí),可以理解為取反,表示不匹配中括號(hào)中的字符串)。{}限定匹配的次數(shù),如{n}表示匹配n個(gè)字符,{n,}表示至少匹配n個(gè)字符,{n,m}表示至少n個(gè),最多m個(gè)(m和n均為非負(fù)整數(shù))。|兩項(xiàng)中取一項(xiàng)。

非打印字符

非打印字符也可以是正則表達(dá)式的組成部分。

字符描述\\b匹配一個(gè)單詞邊界,即字與空格間的位置。("This is Regex匹配單獨(dú)的單詞"is",正則就要寫(xiě)成"\\bis\\b")。\\d匹配數(shù)字。\\w匹配字母,數(shù)字,下劃線。\\s匹配空格。\\B非單詞邊界匹配。\\D匹配非數(shù)字。\\W匹配非(字母,數(shù)字,下劃線)。\\S匹配非空格。

量詞

量詞的三個(gè)重要概念

貪婪(貪心)如"*"字符,貪婪量詞會(huì)首先匹配整個(gè)字符串,嘗試匹配時(shí),它會(huì)選定盡可能多的內(nèi)容,如果失敗則回退一個(gè)字符,然后再次嘗試,回退的過(guò)程就叫做回溯,它會(huì)每次回退一個(gè)字符,直到找到匹配的內(nèi)容或者沒(méi)有字符可以回退。相比下面兩種貪婪量詞對(duì)資源的消耗是最大的。

懶惰(勉強(qiáng))如"?",懶惰量詞使用另一種方法匹配,它從目標(biāo)的起始位置開(kāi)始嘗試匹配,每檢查一個(gè)字符,并尋找它要匹配的內(nèi)容,如此循環(huán)直到字符串結(jié)尾處。

占有如"+",占有量詞很像貪心式量詞,它會(huì)選擇盡可能多的內(nèi)容,然后嘗試尋找匹配內(nèi)容,但它只嘗試一次,不會(huì)回溯。就好比先抓一把石頭,然后從石頭中挑出黃金。

re模塊中常用功能函數(shù)compile()

編譯正則表達(dá)式模式,返回一個(gè)對(duì)象的模式。(可以把一些常用的正則表達(dá)式編譯成正則表達(dá)式對(duì)象,這樣可以提高效率)。

re.compile(pattern,flags=0)

pattern:編譯時(shí)用的表達(dá)式字符串。

flags:編譯標(biāo)志位,用于修改正則表達(dá)式,如:是否區(qū)分大小寫(xiě),多行匹配等。常用的flags有:

標(biāo)志含義re.S(DOTALL)使.匹配包括換行符在內(nèi)的所有字符。re.I(IGNORECASE)是匹配對(duì)大小寫(xiě)不敏感。re.L(LOCALE)做本地化識(shí)別(locale-aware)匹配,法語(yǔ)等。re.M(MULTILINE)多行匹配,影響^和$。re.X(VERBOSE)該標(biāo)志通過(guò)給予更靈活的格式以便將正則表達(dá)式寫(xiě)的更易于理解。re.U根據(jù)Unicode字符集解析字符,這個(gè)標(biāo)志影響\\w、\\W、\\b、\\B

import re# 將正則表達(dá)式編譯成pattern對(duì)象pattern = re.compile("\\d+")

pattern對(duì)象的常用方法有:match()、search()、finall()、finder()、split()、sub()、subn()。

(1)match()方法

該方法用于查找字符串的頭部,它只要找到一個(gè)匹配的結(jié)果就返回。(這個(gè)方法并不是完全匹配。當(dāng)pattern結(jié)束時(shí)若string還要剩余字符,仍然視為成功。想要完全匹配,可以在表達(dá)式末尾加上邊界匹配符'$')。

match(pattern, string,pos=0,endpos=-1)

說(shuō)明:string是待匹配的字符串,pos和endpos指定字符串的起始和終點(diǎn)的位置,當(dāng)不指定是,默認(rèn)從頭部開(kāi)始匹配,當(dāng)匹配成功是,返回Match對(duì)象。

import repattern = re.compile("\\\\d+")match = pattern.match("aaa123bbb123ccc123")print(match)# None(從頭部開(kāi)始匹配)match = pattern.match("aaa123bbb123ccc123", 3, 6)print(match) # <_sre.SRE_Match object; span=(3, 6), match='123'>print(match.group())# 123,返回匹配的字符串,如果需要獲得整個(gè)匹配的字符串時(shí),可以使用group()或者group(0)print(match.start())# 3,返回匹配的字串在整個(gè)字符串的起始位置print(match.end())# 6,返回匹配的字串在整個(gè)字符串的結(jié)束位置print(match.span())# (3, 6),返回(start(), end())(2) serach()方法

search(pattern, string,pos=0,endpos=-1)

說(shuō)明:匹配成功時(shí)返回Match對(duì)象,匹配不成功時(shí)返回None。

import repattern = re.compile("\\\\d+")match = pattern.search("aaaa1111bbbb1234cccc1243")print(match)# <_sre.SRE_Match object; span=(4, 8), match='1111'>match = pattern.search("aaaa1111bbbb1234cccc1243", 3, 6)print(match)# <_sre.SRE_Match object; span=(4, 6), match='11'>print(match.group())# 11print(match.start())# 4print(match.end())# 6print(match.span())# (4, 6)(3)findall()方法

該方法返回所有的匹配結(jié)果。

findall(pattern, string, pos, endpos=-1)

說(shuō)明:匹配成功,返回匹配的列表,匹配不成功,返回空列表。

import repattern = re.compile("\\\\d+")match = pattern.findall("aaaa1111bbbb1234cccc1243")print(match)# ['1111', '1234', '1243'](4)finditer()方法

finditer(pattern, string, pos=0, endpos=-1)

說(shuō)明:匹配所有的字符串,返回所有匹配字符串,但是它返回的是一個(gè)迭代器,通過(guò)該迭代器我們可以訪問(wèn)匹配的每一個(gè)字符串。

import repattern = re.compile("\\\\d+")result_iter = pattern.finditer("aaaa1111bbbb1234cccc1243")for result in result_iter: print("找得到字符串{},位置是{}".format(result.group(), result.span()))# 找得到字符串1111,位置是(4, 8)# 找得到字符串1234,位置是(12, 16)# 找得到字符串1243,位置是(20, 24)(5)split()方法

split(pattern, string, maxsplit=0)

說(shuō)明:用來(lái)分割字符串,maxsplit表示最大的分割次數(shù),不指定即為全部分割。

import reprint(re.split('\\d+', 'one1two2three3four4five5'))# ['one', 'two', 'three', 'four', 'five', ''](6)sub()方法

sub(pattern, repl, string, count=0, flags=0)

說(shuō)明:該方法用來(lái)替換。rel如果為字符串,會(huì)使用rel替換字符串中的每一個(gè)匹配的子串,并且返回替換后的字符串;如果為函數(shù),則該函數(shù)應(yīng)該只接收一個(gè)Match對(duì)象,并且返回一個(gè)字符串用于替換。

count用于指定替換次數(shù)。

import rep = re.compile(r'(\\w+) (\\w+)')s = 'test aaa,test bbb'def func(m): return 'hei' + ' ' + m.group(2)print(p.sub(r'hello world', s))# hello world,hello world(使用hello world替換)print(p.sub(r'\\2 \\1', s)) # aaa test,bbb test(\\1 上方第一個(gè)括號(hào)內(nèi)的內(nèi)容。)print(p.sub(func, s))# hei aaa,hei bbb(替換全部)print(p.sub(func, s, 1))# hei aaa,test bbb(最多只替換一次)

(7)subn()方法

subn(pattern, repl, string, count=0, flags=0)

說(shuō)明:該方法也是用于替換,返回一個(gè)元祖,元祖有兩個(gè)元素,第一個(gè)和使用sub方法返回的結(jié)果一樣,count表示替換的次數(shù)。

import rep = re.compile(r'(\\w+) (\\w+)')s = 'test aaa,test bbb'def func(m): return 'hei' + ' ' + m.group(2)print(p.subn(r'hello world', s))# ('hello world,hello world', 2)print(p.subn(r'\\2 \\1', s)) # ('aaa test,bbb test', 2) (\\1 上方第一個(gè)括號(hào)內(nèi)的內(nèi)容。)print(p.subn(func, s))# ('hei aaa,hei bbb', 2)print(p.subn(func, s, 1))# ('hei aaa,test bbb', 1)一些注意點(diǎn)

1、re.match與 re.searchre.findall 的區(qū)別:

re.match只匹配字符串的開(kāi)始,如果字符串開(kāi)始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None;而re.search匹配整個(gè)字符串,直到找到一個(gè)匹配。re.findall返回所有的匹配結(jié)果。

import rep = re.compile(r'[\\d]')s = 'abc33'print(p.search(s).group())# 3print(p.match(s))# Noneprint(p.findall(s))# ['3', '3']2、貪婪匹配與非貪婪匹配

*,+,?等都是貪婪匹配,也就是盡可能多的匹配,后面加上?號(hào)使其變成

惰性匹配。

import rea = re.findall(r'a(\\d+?)', 'a23b')print(a)b = re.findall(r'a(\\d+)', 'a23b')print(b)

注意:如果前后均有限定條件的時(shí)候,就不存在什么貪婪模式了,非匹配模式失效。

import rea = re.findall(r'a(\\d+)b', 'a3333b')print(a)b = re.findall(r'a(\\d+?)b', 'a3333b')print(b)

以上就是關(guān)于pos機(jī)模塊復(fù)網(wǎng),Python爬蟲(chóng)提取神器的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)模塊復(fù)網(wǎng)的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.rcqwhg.com/newsone/72511.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。