本文主要是介绍re finditer和findall的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
re.finditer 函数是 re.findall 函数的惰性版本,返回的不是列表,而是一个生成器,按需生成 re.MatchObject 实例。如果有很多匹配,re.finditer 函数能节省大量内存。
使用finditer版本:
import re
import reprlibRE_WORD = re.compile('\w+')
class Sentence:def __init__(self, text):self.text = text def __repr__(self):return 'Sentence(%s)' % reprlib.repr(self.text)def __iter__(self):for match in RE_WORD.finditer(self.text):yield match.group()
使用findall版本:
import re
import reprlibRE_WORD = re.compile('\w+')
class Sentence:def __init__(self, text):self.text = textself.words = RE_WORD.findall(text)def __repr__(self):return 'Sentence(%s)' % reprlib.repr(self.text)def __iter__(self):for word in self.words:yield wordreturn
1.使用finditer不在需要创建words 列表
2.finditer 函数构建一个迭代器,包含 self.text 中匹配 RE_WORD 的单词,产出MatchObject 实例。
3.match.group() 方法从 MatchObject 实例中提取匹配正则表达式的具体文本。
这篇关于re finditer和findall的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!