python中的re模塊
❶ python 中 re.sub 和 re.compile 是啥意思呀跪求大神解釋。
在python中re是一個常用的模塊,主要是通過正則表達式進行字元串處理。它的速度相對自己用 find, replace, split來說,通常更快。當然功能更強大。
正則表達式也是一種語言,所以如果通過re.compile把它編譯成對象,會速度快很多。所以我們經常看到這樣的語句
exp=re.compile("S+")
m=exp.search(bigtext)
printm.group(0)
這段話等同於
m=re.search("S+",bigtext)
printm.group(0)
re.sub則相當於字元串操作中的replace,比如
sometext=re.sub("(?isu) "," ",sometext)
上面這句話是將回車換行,變成換行。這是為了將windows下的文本文件移到linux下,防止某些軟體不兼容所做的處理。
簡單的說re.sub是做字元串替換的, re.compile是將正則表達式編譯成一個對象,加快速度,並重復使用。
❷ 強烈推薦!Python 這個寶藏庫 re 正則匹配
Python 的 re 模塊(Regular Expression 正則表達式)提供各種正則表達式的匹配操作。
在文本解析、復雜字元串分析和信息提取時是一個非常有用的工具 ,下面總結了 re 模塊的常用方法。
d 匹配所有的十進制數字 0-9
D 匹配所有的非數字,包含下劃線
s 匹配所有空白字元(空格、TAB等)
S 匹配所有非空白字元,包含下劃線
w 匹配所有字母、漢字、數字 a-z A-Z 0-9
W 匹配所有非字母、漢字、數字,包含下劃線
備注跡凳:符號.* 貪婪,符號.*? 非貪婪
[abc]:能匹配其中的單個字元
[a-z0-9]:能匹配指定范圍的字元,可取反(在最前面加入^)
[2-9] [1-3]:能夠做組合匹配
4.{ }:用於標記前面的字元出現的頻率,有如下情況:
{n,m}:代表前面字元最少出現n次,最多出現m次
{n,}:代表前面字元最少出現n次,最多不受限制
{,m}:代表前面字元最多出現n次,最少不受限制
{n}:前面的字元必須出現n次
字元串中有反斜杠的,需要對反斜杠做轉義
():分組字元,可以為匹配到的內容分組,快速獲取到分組中的數據 在正則裡面 "()" 代表的是分組的意思,一個括弧代表一個分組,你只能匹配到 "()" 中的內容。
group:用於查看指定分組匹配到的內容
groups:返回一個元組,組內為所有匹配到的內容
groupdict:返回一個字典,包含分組的鍵值對,需要為分組命名
作用:可以將字元串匹配正則表達式的部分割開並返回一個列表
flags定義包括:
re.I:忽略大小寫
re.L:表示特殊字元集 w, W, b, B, s, S 依賴於當前環境
re.M:多行模式
re.S:』.』並且包括換行符在內的任意字元(注意:』.』不包括換行符)
re.U:表示特殊字元集 w, W, b, B, d, D, s, S 依賴於 Unicode 字元屬性資料庫
在 Python 中使用正耐孫則表達式之前,先使用以下命令導入 re 模塊
例如:
『(d)(a)1』 表示:匹配第一是數字,第二是字元a,第三 1 必須匹配第一個一樣的數字重復一次姿畝旅,也就是被引用一次。
如 「9a9」 被匹配,但 「9a8」 不會被匹配,因為第三位的 1 必須是 9 才可以。
『(d)(a)2』 表示:匹配第一個是一個數字,第二個是a,第三個 2 必須是第二組()中匹配一樣的。
如 「8aa」 被匹配,但 「8ab」,「7a7」 不會被匹配,第三位必須是第二組字元的復製版,也是就引用第二組正則的匹配內容。
❸ Python模塊的幾種類型簡介
view plain to clipboardprint?
import os
import stat
import time<DIV></DIV>
fileStats = os.stat ( 'test.txt' )
fileInfo = {
'Size' : fileStats [ stat.ST_SIZE ],
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),
'Mode' : fileStats [ stat.ST_MODE ]
}
for infoField, infoValue in fileInfo:
print infoField, ':' + infoValue
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):
print 'Directory. '
else:
print 'Non-directory.'
import os
import stat
import time
fileStats = os.stat ( 'test.txt' )
fileInfo = {
'Size' : fileStats [ stat.ST_SIZE ],
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),
'Mode' : fileStats [ stat.ST_MODE ]
}
for infoField, infoValue in fileInfo:
print infoField, ':' + infoValue
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ):
print 'Directory. '
else:
print 'Non-directory.'
❹ Python re模塊 正則表達式之compile函數
為了重復利用同一個正則對象,需要多次使用這個正則表達式的話,使用re.compile()保存這個正則對象以便復用,可以讓程序更加高效。
1)re.compile
參數:
re.I 忽略大小寫
re.L 表示特殊字元集 w, W, b, B, s, S 依賴於當前環境
re.M 多行模式
re.S 即為' . '並且包括換行符在內的任意字元(' . '不包括換行符)
re.U 表示特殊字元集 w, W, b, B, d, D, s, S 依賴於 Unicode 字元屬性資料庫
re.X 為了增加可讀性,忽略空格和' # '後面的注釋
案例:
在上面,當匹配成功時返回一個 Match 對象,其中:
2)re.findall
在字元串中找到正則表達式所匹配的所有子串,並返回一個列表,如果有多個匹配模式,則返回元組列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
參數:
案例:
3)re.finditer
和 findall 類似,在字元串中找到正則表達式所匹配的所有子串,並把它們作為一個迭代器返回。
案例:
4)re.split
split 方法按照能夠匹配的子串將字元串分割後返回列表。
案例:
從上篇Python re模塊 正則表達式到這篇,我們已經把常用的正則匹配的方法學會了。
關注我,堅持每日積累一個技巧, 長期堅持 ,我們將會不斷進步。
#python# #程序員# #請回答,你的年度知識點# #教育聽我說# #計算機#