##以乙個帶檔案操作的例子說明
目標:開啟乙個檔案,提取()中的內容,儲存在乙個新的檔案裡
涉及到的一些操作:
序號操作
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...