本篇內(nèi)容介紹了“怎么用Python函數(shù)編譯函數(shù)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、尖扎ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的尖扎網(wǎng)站制作公司
直接使用findall ( rule , target )的方式來匹配字符串,一次兩次沒什么,如果是多次使用的話,由于正則引擎每次都要把規(guī)則解釋一遍。而規(guī)則的解釋又是相當(dāng)費(fèi)時(shí)間的,所以這樣的效率就很低了。如果要多次使用同一規(guī)則來進(jìn)行匹配的話,可以使用re.compile函數(shù)來將規(guī)則預(yù)編譯,使用編譯過返回的Regular Expression Object或叫做Pattern對(duì)象來進(jìn)行查找。
將一個(gè)正則式,使用Python函數(shù)編譯,不僅是為了提高匹配的速度,同時(shí)還能使用一些附加的功能。編譯后的結(jié)果生成一個(gè)Pattern對(duì)象。這個(gè)對(duì)象里面有很多函數(shù),他們看起來和re模塊的Python函數(shù)編譯非常象,它同樣有findall , match , search ,finditer , sub , subn , split 這些函數(shù)。
只不過它們的參數(shù)有些小小的不同。一般說來,re模塊函數(shù)的***個(gè)參數(shù),即正則規(guī)則不再需要了,應(yīng)為規(guī)則就包含在Pattern對(duì)象中了,編譯選項(xiàng)也不再需要了,因?yàn)橐呀?jīng)被編譯過了。因此re模塊中函數(shù)的這兩個(gè)參數(shù)的位置,就被后面的參數(shù)取代了。
findall , match , search 和finditer這幾個(gè)函數(shù)的參數(shù)是一樣的,除了少了規(guī)則和選項(xiàng)兩個(gè)參數(shù)外,它們又加入了另外兩個(gè)參數(shù),它們是:查找開始位置和查找結(jié)束位置,也就是說,現(xiàn)在你可以指定查找的區(qū)間,除去你不感興趣的區(qū)間。它們現(xiàn)在的參數(shù)形式是:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')
這里是一點(diǎn)小心得。 由于正則表達(dá)式使用反斜杠來轉(zhuǎn)義特殊字符,而python自身處理字符串時(shí),反斜杠也是用于轉(zhuǎn)義字符,這樣就產(chǎn)生了一個(gè)雙重轉(zhuǎn)換的問題要匹配字符串中1個(gè)反斜杠應(yīng)該怎么寫正則表達(dá)式?"\\",這樣行嗎?試試就知道了。
re模塊拋異常了,Python函數(shù)編譯因?yàn)?\\"就是一個(gè)反斜杠,對(duì)于正則表達(dá)式解析器來說,是一個(gè)轉(zhuǎn)義字符,但是后面啥也沒有,自然就報(bào)錯(cuò)了,"\\\"三個(gè)肯定是不行的,試試四個(gè)"\\\\",***匹配。
我們來分析一下這個(gè)例子:這個(gè)正則式是匹配單詞、或數(shù)字、或一個(gè)由字母或’_’開頭,后面接字母或數(shù)字的一個(gè)ID。我們給這三種情況的規(guī)則都包入了一個(gè)命名組,分別命名為’word’ , ‘num’ 和 ‘id’。我們規(guī)定大小寫不敏感,所以使用了編譯選項(xiàng) 。
“怎么用Python函數(shù)編譯函數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!