久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

優(yōu)質(zhì)資源,,python正則表達(dá)式實(shí)踐&python網(wǎng)絡(luò)編程,!

 首家i55ryzehof 2018-09-23

正則表達(dá)式

應(yīng)用場(chǎng)景

如果你感覺(jué)學(xué)不會(huì),?莫慌,,小編推薦大家加入群,

前面548中間377后面875,,群里有志同道合的小伙伴,,

互幫互助,還可以拿到許多視頻教程,!

特定規(guī)律字符串的查找替換切割等

郵箱格式,、URL、IP等的校驗(yàn)

爬蟲(chóng)項(xiàng)目中,,特定內(nèi)容的提取

使用原則

只要是能夠使用字符串函數(shù)解決的問(wèn)題,,就不要使用正則

正則的效率較低,還會(huì)降低代碼的可讀性

世界上最難理解的三樣?xùn)|西:醫(yī)生的處方,、道士的神符,、碼農(nóng)的正則

提醒:正則是用來(lái)寫(xiě)的,不是用來(lái)讀的,;在不知道功能的情況下,,不要試圖閱讀別人的正則。

基本使用

說(shuō)明:正則的解析處理是由 re 模塊完成

相關(guān)函數(shù):

match:從開(kāi)頭進(jìn)行匹配,,匹配到就返回正則結(jié)果對(duì)象,,沒(méi)有就返回None

search:從任意位置匹配,匹配到一次就返回,,沒(méi)有就返回None

import re

# 只從開(kāi)頭匹配,,找到返回一個(gè)正則結(jié)果對(duì)象,沒(méi)有找到返回None

# m = re.match('abc', 'abcsdhasdasjabcweuqo')

# 全部匹配,,只要找到就停止并返回

m = re.search('abc', 'sdhabcsdasjabcweuqo')

if m:

# 提取匹配到的內(nèi)容

print(m.group())

# 獲取匹配位置

print(m.span())

findall:全局匹配,,返回匹配到的結(jié)果列表,沒(méi)有時(shí)返回空列表

# 匹配所有內(nèi)容,,返回匹配結(jié)果組成的列表,,若沒(méi)有則返回空列表

f = re.findall('abc', 'qwsdhaslabcsadjlasdoiabcdakls')

if f:

print(f)

print(type(f))

compile:生成正則表達(dá)式對(duì)象

# 生成正則表達(dá)式對(duì)象,用于正則匹配

c = re.compile('hello')

# 從開(kāi)頭進(jìn)行匹配

# m = c.match('hellosdsjldkabc')

# 從任意位置匹配

m = c.search('shdjkhelloaskjdha')

if m:

print(m.group())

# 匹配所有

f = c.findall('helloasjdhakhello')

if f:

print(f)

將正則的匹配分兩步完成:先創(chuàng)建正則對(duì)象,,然后通過(guò)對(duì)象的match,、search、findall方法完成匹配

正則規(guī)則

單個(gè)字符:

普通字符:簡(jiǎn)單來(lái)說(shuō)就是一對(duì)一的完全匹配

[]:中間的任意一個(gè)字符

[a-z]:a~z之間的字符(所有小寫(xiě)字母)

[0-9]:0~9之間的字符(所有數(shù)字)

[A-Z0-9]:所有的大寫(xiě)字母和數(shù)字

[^abc]:除abc外的所有字符

. :匹配' '以外的任意字符

d:所有的數(shù)字,,等價(jià)于[0-9]

D:所有的非數(shù)字,,等價(jià)于[^0-9]

w:所有的數(shù)字、字母(中文),、下劃線等(就是字)

W:所有的非字字符(w的取反)

s:所有的空白字符( ,、,、、空格等)

S:所有的非空白字符

:詞邊界匹配(開(kāi)頭,、結(jié)尾,、標(biāo)點(diǎn)、空格)

B:非詞邊界匹配

次數(shù)控制

*:前面的字符出現(xiàn)任意次

+:前面的字符出現(xiàn)至少一次

?:前面的字符出現(xiàn)至多一次

:指定次數(shù),,m表示出現(xiàn)的次數(shù)

:至少指定次數(shù)

:指定范圍內(nèi)的次數(shù),,m到n次之間

{,n}:至多n次,相當(dāng)于

正則的匹配默認(rèn)都是貪婪的(最大限度的匹配)

邊界限定

^:以指定的內(nèi)容開(kāi)頭

$:以指定的內(nèi)容結(jié)尾

示例

import re

# 以指定的內(nèi)容開(kāi)頭

# c = re.compile(r'^abc')

# 以指定的內(nèi)容結(jié)尾

c = re.compile(r'kas$')

s = c.search('abcsdhkas')

if s:

print(s.group())

優(yōu)先級(jí)控制

|:表示或,,它擁有最低的優(yōu)先級(jí)

():用于表示一個(gè)整體,,明確的指定優(yōu)先級(jí)

示例:

import re

c = re.compile(r'a(hello|world)b')

s = c.search('aworldb')

if s:

print(s.group())

分組匹配

說(shuō)明:()不但可以作為一個(gè)整體,還可以進(jìn)行分組匹配

示例1:

import re

c = re.compile(r'(d+)([a-z]+)(d+)')

s = c.search('shd327sjahdajhsd87892ehawksd')

if s:

print(s.group())

# 默認(rèn)就是全部的匹配內(nèi)容,,等價(jià)于上式

print(s.group(0))

# 第一個(gè)()匹配到的內(nèi)容

print(s.group(1))

print(s.group(2))

print(s.group(3))

print(s.span())

print(s.span(0))

print(s.span(1))

print(s.span(2))

print(s.span(3))

示例2:給分組起名字

import re

# 固定匹配

# c = re.compile(r'

w+

')

# 表示前面第一個(gè)小括號(hào)匹配的內(nèi)容

# c = re.compile(r'w+')

# 給()起名字

c = re.compile(r'[a-z]+)>[a-z]+)>w+')

s = c.search('

百度一下

')

if s:

print(s.group())

貪婪匹配

貪婪:最大限度的匹配叫貪婪,。正則的匹配默認(rèn)是貪婪。

非貪婪:只要滿足匹配條件,,能少匹配就少匹配,;通過(guò)可以使用'?'進(jìn)行取消貪婪

示例:

import re

# 取消任意多次的貪婪

# c = re.compile(r'a.*?b')

# 取消至少一次的貪婪

c = re.compile(r'a.+?b')

s = c.search('abdhsadjbsdjabs')

if s:

print(s.group())

匹配模式

說(shuō)明:所謂模式就是對(duì)匹配的原則進(jìn)行整體的修飾

示例:

import re

# 忽略大小寫(xiě)的匹配

# c = re.compile(r'hello', re.I)

# s = c.search('Hello world')

# 進(jìn)行多行匹配,默認(rèn)單行匹配

# c = re.compile(r'^hello', re.M)

# s = c.search('world hello')

# 做為單行處理 或 讓 . 能夠匹配

c = re.compile(r'

.*?

', re.S)

# string = '

hello

'

string = '''

hello

s = c.search(string)

if s:

print(s.group())

字符轉(zhuǎn)義

若匹配正則語(yǔ)法中的特定字符都需要進(jìn)行轉(zhuǎn)義

正則字符串會(huì)被處理兩次,,python中處理一次,,re模塊會(huì)在處理一次

若不想考慮字符的轉(zhuǎn)義問(wèn)題,可以在書(shū)寫(xiě)正則字符串時(shí)前面加一個(gè)字符'r'

添加'r'之后,,在python不會(huì)再進(jìn)行任何轉(zhuǎn)義,,只需在與正則語(yǔ)法相關(guān)的字符前加''即可讓其使用原有意義

網(wǎng)絡(luò)編程

相關(guān)概念

OSI七層模型:開(kāi)放系統(tǒng)互連參考模型。它從低到高分別是:物理層,、數(shù)據(jù)鏈路層,、網(wǎng)絡(luò)層、傳輸層,、會(huì)話層,、表示層和應(yīng)用層,。

TCP/IP:在OSI七層模型的基礎(chǔ)上簡(jiǎn)化抽象出來(lái)的一套網(wǎng)絡(luò)協(xié)議簇,,現(xiàn)在得到了廣泛使用。

TCP:傳輸控制協(xié)議

有連接的,,數(shù)據(jù)是安全有保障的

傳輸?shù)乃俣壬月?,三次握手、四次揮手,、數(shù)據(jù)檢查

UDP:用戶數(shù)據(jù)報(bào)協(xié)議

無(wú)連接的,,數(shù)據(jù)是不可靠的

傳輸?shù)乃俣缺容^快

IP地址:唯一的一臺(tái)計(jì)算標(biāo)識(shí)

查看:ipconfig

ping:檢查網(wǎng)絡(luò)連通性

使用:ping IP/域名

端口號(hào):每個(gè)應(yīng)用可以擁有唯一的端口號(hào)

范圍:0~65535

系統(tǒng):0~1024,常用的應(yīng)用所占用

http:80

https:443

smtp:25

ftp:21

ssh:22

mysql:3306

redis:6379

自己:大于1024

網(wǎng)絡(luò)編程核心:

IP + 端口

庫(kù):socket

TCP協(xié)議

說(shuō)明:面向連接,、數(shù)據(jù)可靠(校驗(yàn)重發(fā)),、三次握手,、四次揮手、傳輸速度較慢

原理:見(jiàn) tcp.png

示例:見(jiàn) 01-tcp-http.py

TCP協(xié)議的服務(wù)器與客戶端:見(jiàn) 02-tcp-server.py 與 03-tcp-client.py

UDP協(xié)議

說(shuō)明:面向無(wú)連接的,、數(shù)據(jù)不可靠,、傳輸速度較快,適應(yīng)于對(duì)數(shù)據(jù)要求不嚴(yán)格的情況

原理:見(jiàn) udp.png

示例:模擬飛秋發(fā)送數(shù)據(jù),,見(jiàn) 04-udp-feiqiu.py

UDP協(xié)議的服務(wù)器與客戶端:見(jiàn) 05-udp-server.y 與 06-udp-client.py

StringIO與BytesIO

說(shuō)明:這些類(lèi)型的對(duì)象可以與open返回的對(duì)象一樣操作,,但是操作的內(nèi)存中的數(shù)據(jù)

方法:getvalue用于獲取所有數(shù)據(jù)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多