re中findall()與finditer()匹配結果的區別

findall()瀏覽全部字符串,匹配所有合規則的字符串,匹配到的字符串放到一個列表中,未匹配成功返回空列表。
通過實例代碼來就醫具體區分:

# coding:utf-8
'''
Note:
    re庫筆記
Author:Qred
Date:2019/7/23
'''
import re

line  = 'Cats are smarter than dogs.

# findall()
searchObj = re.findall(r'(.*)are ((.*?) .*)', line)
if searchObj != None:
    print type(searchObj)
    # 查看findall返回的數據爲列表格式
    print searchObj
    # 具體的匹配結果 
    for obj in searchObj:
        print type(obj)
        print obj
        for ob in obj :
          print ob

代碼輸出:
在這裏插入圖片描述

finditer()在字符串中找到正則表達式所匹配的所有子串,並把它們作爲一個迭代器返回

實例代碼:

# finditer()
searchObj = re.finditer(r'(.*)are ((.*?) .*)', line)
if searchObj != None:
    print type(searchObj)
    # finditer返回結果類型
    
    for obj in searchObj:
        print type(obj)
        for ob in obj.groups():
            print type(ob)
            print ob

返回結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章