91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中re的finditer與findall有什么不同

發布時間:2020-11-16 14:06:18 來源:億速云 閱讀:392 作者:Leah 欄目:開發技術

python中re的finditer與findall有什么不同?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

python正則模塊re中findall和finditer兩者相似,但卻有很大區別。 

兩者都可以獲取所有的匹配結果,這和search方法有著很大的區別,同時不同的是一個返回list,一個返回一個MatchObject類型的iterator

假設我們有這樣的數據:其中數字代表電話號,xx代表郵箱類型

content = '''email:12345678@163.com
email:2345678@163.com
email:345678@163.com
''' 

需求:(正則沒有分組)提取所有的郵箱信息

result_finditer = re.finditer(r"\d+@\w+.com", content)
#由于返回的為MatchObject的iterator,所以我們需要迭代并通過MatchObject的方法輸出
for i in result_finditer :
  print i.group()

result_findall = re.findall(r"\d+@\w+.com", content)
#返回一個[] 直接輸出or或者循環輸出
print result_findall
for i in result_findall :
  print i 

需求:(正則有分組)提取出來所有的電話號碼和郵箱類型

result_finditer = re.finditer(r"(\d+)@(\w+).com", content)
#正則有兩個分組,我們需要分別獲取分區,分組從0開始,group方法不傳遞索引默認為0,代表了整個正則的匹配結果
for i in result_finditer :
  phone_no = i.group(1)
  email_type = i.group(2)

result_findall = re.findall(r"(\d+)@(\w+).com", content)
#此時返回的雖然為[],但不是簡單的[],而是一個tuple類型的list 
#如:[('12345678', '163'), ('2345678', '163'), ('345678', '163')]
for i in result_findall :
  phone_no = i[0]
  email_type = i[1] 

命名分組和非命名分組的情況是一樣的。

findall注意點:

1.當正則沒有分組是返回的就是正則的匹配

re.findall(r"\d+@\w+.com", content)
['2345678@163.com', '2345678@163.com', '345678@163.com'] 

2.有一個分組返回的是分組的匹配而不是整個正則的匹配

re.findall(r"(\d+)@\w+.com", content)
['2345678', '2345678', '345678'] 

3.多個分組時將分組裝到tuple中 返回

re.findall(r"(\d+)@(\w+).com", content)
[('2345678', '163'), ('2345678', '163'), ('345678', '163')] 

因此假如我們需要拿到整個正則和每個分組的匹配,使用findall我們需要將整個正則作為一個分組

re.findall(r"((\d+)@(\w+).com)", content)
[('2345678@163.com', '2345678', '163'), ('2345678@163.com', '2345678', '163'), ('345678@163.com', '345678', '163')] 

而使用finditer我們無需手動將整個正則用()括起來group()代表整個正則的匹配

實際中我們根據我們的需求選擇方法既可。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南皮县| 宿迁市| 阆中市| 汉源县| 历史| 卢湾区| 赤壁市| 东平县| 交口县| 喜德县| 子洲县| 徐汇区| 顺昌县| 晋江市| 林芝县| 瑞昌市| 巴中市| 乌鲁木齐县| 奎屯市| 略阳县| 涟源市| 于田县| 乌拉特后旗| 恩平市| 浏阳市| 浦城县| 永嘉县| 温州市| 柳林县| 江油市| 桑植县| 新田县| 延边| 会宁县| 沿河| 蒙阴县| 庆安县| 永寿县| 安图县| 合江县| 石泉县|