re finditer和findall的区别

re.finditer 函数是 re.findall 函数的惰性版本,返回的不是列表,而是一个生成器,按需生成 re.MatchObject 实例。如果有很多匹配,re.finditer 函数能节省大量内存。

使用finditer版本:

import re
import reprlib

RE_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 reprlib

RE_WORD = re.compile('\w+')
class Sentence:
	def __init__(self, text):
		self.text = text
		self.words = RE_WORD.findall(text)

	def __repr__(self):
		return 'Sentence(%s)' % reprlib.repr(self.text)

	def __iter__(self):
		for word in self.words:
			yield word
		return

1.使用finditer不在需要创建words 列表
2.finditer 函数构建一个迭代器,包含 self.text 中匹配 RE_WORD 的单词,产出MatchObject 实例。
3.match.group() 方法从 MatchObject 实例中提取匹配正则表达式的具体文本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值