1. 程式人生 > 實用技巧 >python的re模組一些方法 && Tkinter圖形介面設計 && 終止python執行函式 && python讀寫檔案 && python一旦給字串賦值就不能單獨改變某個字元,除非重新給變數賦值

python的re模組一些方法 && Tkinter圖形介面設計 && 終止python執行函式 && python讀寫檔案 && python一旦給字串賦值就不能單獨改變某個字元,除非重新給變數賦值

Tkinter圖形介面設計見:https://www.cnblogs.com/pywjh/p/9527828.html#radiobutton

終止python執行函式:

採用sys.exit(0)正常終止程式

python讀寫檔案(python3.0讀寫二進位制檔案後面一定要加b,否則會報錯“write() argument must be str, not bytes”,例如:ab,a+b):

#讀寫二進位制檔案,例如mp3、mp4
        film = requests.get(self.vedio_url, headers=self.headers).content
        with open(self.name
+'.mp4', 'a+b') as f: f.write(film)

1、匹配規則

2、re.compile:編譯一個正則表示式,用這個結果去search,match,findall,finditer能夠節省時間

3、re.findall:返回列表,找所有的匹配項

優點:可以匹配到所有滿足條件的匹配項

缺點:但是這個函式不會匹配換行

import re
pattern = re.compile(r'\d+.\d*')
result = pattern.findall("123.141593, 'bigcat', 232312, 3.15")
for
item in result: print(item) #結果 123.141593 232312, 3.15

4、re.search:匹配就返回一個變數,通過group取匹配到的第一個值,不匹配就返回None,group會報錯

優點:可以匹配到換行,函式第三個引數加上re.S

缺點:只能匹配到第一個滿足條件的匹配項

html = ''
pattern1 = ',(.*?)#'
url_old = re.search(pattern1,html,re.S)

5、re.finditer:返回一個迭代器,所有的結果都在這個迭代器中,需要通過迴圈+group的形式取值,能夠節省記憶體

優點:可以匹配到換行,且能匹配到所有滿足條件的匹配項

ret = re.finditer('\d+','alex83taibai40egon25')
for i in ret:
    print(i.group())

結果:
83
40
25

6、re.match 方法用於查詢字串的頭部(也可以指定起始位置),它是一次匹配,只要找到了一個匹配的結果就返回,而不是查詢所有匹配的結果。它的一般使用形式如下:

match(string[, pos[, endpos]])

其中,string 是待匹配的字串,pos 和 endpos 是可選引數,指定字串的起始和終點位置,預設值分別是 0 和 len (字串長度)。因此,當你不指定 pos 和 endpos   時,match 方法預設匹配字串的頭部。

當匹配成功時,返回一個 Match 物件,如果沒有匹配上,則返回 None。

ret = re.match('\d+','172sjkhk按實際花費928')
print(ret.group())

結果:
172

>>> import re
>>> pattern = re.compile(r'\d+')  # 用於匹配至少一個數字

>>> m = pattern.match('one12twothree34four')  # 查詢頭部,沒有匹配
>>> print m
None

>>> m = pattern.match('one12twothree34four', 2, 10) # 從'e'的位置開始匹配,沒有匹配
>>> print m
None