偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Python函數(shù)編譯函數(shù)

開(kāi)發(fā) 后端
在上面的說(shuō)明中,我們已經(jīng)對(duì)Python函數(shù)編譯函數(shù) ‘findall’很熟悉了。當(dāng)然如果光有findall的話,很多功能是不能實(shí)現(xiàn)的。

下面開(kāi)始介紹一下模塊其它的常用Python函數(shù)編譯,靈活搭配使用這些函數(shù),才能充分發(fā)揮Python正則式的強(qiáng)大功能,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。

直接使用findall ( rule , target )的方式來(lái)匹配字符串,一次兩次沒(méi)什么,如果是多次使用的話,由于正則引擎每次都要把規(guī)則解釋一遍。而規(guī)則的解釋又是相當(dāng)費(fèi)時(shí)間的,所以這樣的效率就很低了。如果要多次使用同一規(guī)則來(lái)進(jìn)行匹配的話,可以使用re.compile函數(shù)來(lái)將規(guī)則預(yù)編譯,使用編譯過(guò)返回的Regular Expression Object或叫做Pattern對(duì)象來(lái)進(jìn)行查找。

將一個(gè)正則式,使用Python函數(shù)編譯,不僅是為了提高匹配的速度,同時(shí)還能使用一些附加的功能。編譯后的結(jié)果生成一個(gè)Pattern對(duì)象。這個(gè)對(duì)象里面有很多函數(shù),他們看起來(lái)和re模塊的Python函數(shù)編譯非常象,它同樣有findall , match , search ,finditer , sub , subn , split 這些函數(shù)。#t#

只不過(guò)它們的參數(shù)有些小小的不同。一般說(shuō)來(lái),re模塊函數(shù)的***個(gè)參數(shù),即正則規(guī)則不再需要了,應(yīng)為規(guī)則就包含在Pattern對(duì)象中了,編譯選項(xiàng)也不再需要了,因?yàn)橐呀?jīng)被編譯過(guò)了。因此re模塊中函數(shù)的這兩個(gè)參數(shù)的位置,就被后面的參數(shù)取代了。

findall , match , search 和finditer這幾個(gè)函數(shù)的參數(shù)是一樣的,除了少了規(guī)則和選項(xiàng)兩個(gè)參數(shù)外,它們又加入了另外兩個(gè)參數(shù),它們是:查找開(kāi)始位置和查找結(jié)束位置,也就是說(shuō),現(xiàn)在你可以指定查找的區(qū)間,除去你不感興趣的區(qū)間。它們現(xiàn)在的參數(shù)形式是:

  1. import Image  
  2.  
  3. # load a color image  
  4. im = Image.open(''fun.jpg'')  
  5.  
  6. # convert to grey level image  
  7. Lim = im.convert(''L'')  
  8. Lim.save(''fun_Level.jpg'')  
  9.  
  10. # setup a converting table with constant threshold  
  11. threshold = 80 
  12. table = []  
  13. for i in range(256):  
  14.     if i < threshold: 
  15.         table.append(0)  
  16.     else:  
  17.         table.append(1)  
  18.  
  19. # convert to binary image by the table  
  20. bim = Lim.point(table, ''1'')  
  21.  
  22. bim.save(''fun_binary.jpg'')  

這里是一點(diǎn)小心得。 由于正則表達(dá)式使用反斜杠來(lái)轉(zhuǎn)義特殊字符,而python自身處理字符串時(shí),反斜杠也是用于轉(zhuǎn)義字符,這樣就產(chǎn)生了一個(gè)雙重轉(zhuǎn)換的問(wèn)題要匹配字符串中1個(gè)反斜杠應(yīng)該怎么寫正則表達(dá)式?"\\",這樣行嗎?試試就知道了。

re模塊拋異常了,Python函數(shù)編譯因?yàn)?\\"就是一個(gè)反斜杠,對(duì)于正則表達(dá)式解析器來(lái)說(shuō),是一個(gè)轉(zhuǎn)義字符,但是后面啥也沒(méi)有,自然就報(bào)錯(cuò)了,"\\\"三個(gè)肯定是不行的,試試四個(gè)"\\\\",***匹配。

我們來(lái)分析一下這個(gè)例子:這個(gè)正則式是匹配單詞、或數(shù)字、或一個(gè)由字母或’_’開(kāi)頭,后面接字母或數(shù)字的一個(gè)ID。我們給這三種情況的規(guī)則都包入了一個(gè)命名組,分別命名為’word’ , ‘num’ 和 ‘id’。我們規(guī)定大小寫不敏感,所以使用了編譯選項(xiàng) 。

責(zé)任編輯:chenqingxiang 來(lái)源: 博客園
相關(guān)推薦

2010-02-03 15:40:37

Python函數(shù)

2010-03-15 10:49:57

Python函數(shù)變量

2010-10-20 13:43:37

C++編譯器

2010-02-01 17:50:32

Python裝飾器

2019-09-02 10:51:59

Python腳本語(yǔ)言程序員

2021-03-31 07:39:18

pythonHIVEUDF函數(shù)

2022-07-07 09:03:36

Python返回函數(shù)匿名函數(shù)

2010-09-09 09:31:19

SQL函數(shù)left

2011-07-20 10:45:36

sqlite數(shù)據(jù)庫(kù)sqlite擴(kuò)展函數(shù)

2021-03-27 10:54:34

Python函數(shù)代碼

2010-10-25 17:08:34

oracle聚合函數(shù)

2010-07-21 10:18:41

Perl map函數(shù)

2010-09-24 19:28:12

SQL CHARIND

2010-01-18 17:23:55

函數(shù)

2009-08-19 14:26:58

C# JavaScri

2010-10-09 16:18:43

MYSQL IFNUL

2010-10-11 15:08:44

MySQL conca

2009-11-18 10:22:14

PHP substr

2010-10-11 16:23:35

MYSQL BENCH

2022-09-22 08:19:26

WebFlux函數(shù)式編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)