example-code-2e/17-it-generator/sentence_gen2.py

25 lines
448 B
Python
Raw Normal View History

"""
Sentence: iterate over words using a generator function
"""
# tag::SENTENCE_GEN2[]
import re
import reprlib
2021-05-21 23:56:12 +02:00
RE_WORD = re.compile(r'\w+')
class Sentence:
def __init__(self, text):
self.text = text # <1>
def __repr__(self):
2021-05-21 23:56:12 +02:00
return f'Sentence({reprlib.repr(self.text)})'
def __iter__(self):
for match in RE_WORD.finditer(self.text): # <2>
yield match.group() # <3>
# end::SENTENCE_GEN2[]