python基礎 re使用

2021-09-03 00:21:06 字數 2067 閱讀 9274

##以乙個帶檔案操作的例子說明

目標:開啟乙個檔案,提取()中的內容,儲存在乙個新的檔案裡

涉及到的一些操作:

序號操作

1檔案操作codecs.open

2正規表示式re模組的使用

上**:

import linecache

import re

import codecs

filename =

"./lolstatistics.txt"

def fun1

(name)

: filename = name

#thefile =

open

(filename,

"r", encoding=

"utf-8"

) linenum=

0 doneline=

newstatics = codecs.

open

('newstatics.txt'

,'w+'

, encoding=

'utf-8'

)while linenum <59:

eachline=linecache.

getline

(r'./lolstatistics.txt'

, linenum +1)

myline=re.

search

('\((.+?)\)'

,eachline)

.group(1

)+"\n"

linenum+=

1print

(myline)

doneline.

(myline)

wholepage =

str(doneline)

newstatics.

writelines

(myline)

newstatics.

close()

if __name__ ==

'__main__'

:fun1

(filename )

說明

背景是處理一些直接從lol官網上覆制貼上到本地的英雄資料,處理後就是()中的內容了:例:總擊殺(場均)\n==》場均。

因為是複製貼上的格式是gbk讀寫操作時候需要轉個碼, encoding=『utf-8』

用codecs.open(『newstatics.txt』, 『w+』, encoding=『utf-8』)開啟檔案

linecache.getline(r』./lolstatistics.txt』, linenum + 1)逐行讀取檔案,59是因為原來的**行數已經知道了linecache.getline很便捷

myline=re.search(』((.+?))』,eachline).group(1)+"\n"匹配出()中的內容,(.+?)是一種很便捷的匹配一串文字的正規表示式,在它的兩端加上頭尾的匹配內容就行

re.search使用起來比較方便,關於group()的返回可以看下面這個例子:

a=

"總擊殺(場均)\n"

testlist=re.

search

(r"\((.+?)\)"

,a).

group()

print

("不帶引數返回:"

,testlist)

testlist = re.

search

(r"\((.+?)\)"

, a)

.group(1

)print

("帶引數1返回:"

,testlist)

run的結果

不帶引數: (場均)

帶1 場均

re.search(***xx,***xx).group()返回內容中包括re.search函式中第乙個引數(.+?)頭尾匹配的內容 ,這裡就是兩頭的 ( )

re.search(***xx,***xx).group(1)返回內容中僅是(.+?)頭尾匹配的內容 ,這裡就是場均

python基礎 Re正則

正規表示式 regular expression,簡稱re 正規表示式是對字串操作的 種邏輯公式,就是 事先定義好的 些特定字元 及這些特定字元的組合,組成 個 規則字串 這個 規則字串 來表達對字串的 種過濾邏輯。字串的匹配查詢 re模組中的findall函式可以對指定的字串進行遍歷匹配,獲取字串...

python正則re使用

1 import re 將正規表示式編譯成pattern物件 pattern re.compile r hello re.i 使用pattern匹配文字,獲得匹配結果,無法匹配時將返回none match pattern.match hello world if match 使用match獲得分組資...

python中re庫基礎

正規表示式 基礎使用方法 data re.compile d re.i re.s 建立正規表示式物件 第二個引數代表忽略大小寫以及換行 str data.findall zfc 進行字串匹配 返回是列表形式 re類 正規表示式 萬能匹配 zfc asdkfgjosadjfo1234asdtfgw e...