我是一个Python初学者,我正在尝试阅读示例.txt使用iterator和next方法逐段归档。问题是,如果不使用for循环或line=next(it),我无法在next方法中逐行读取。任何帮助都将不胜感激。这是我到现在为止所拥有的。在
class ByParagraph:
def __init__(self, text):
self.text = text
def __iter__(self):
return self
par = ""
def __next__(self):
par = ""
if (I still need to decide how to stop the iterations):
raise StopIteration
if str(self.text).isspace():
return par.strip()
else:
return ' '.join([par, str(self.text)])
with open("example.txt") as f:
for par in ByParagraph(f):
print('BEGIN PAR' + par + 'END PAR')
所以您需要实际使用
self.text
,因为这是一个文件迭代器(f
),也就是说,您需要调用next(self.text)
。您需要多次调用此函数来使用所有行,直到收到一个blank like,因此需要一个循环。一个for
循环将调用next(self.text)
,因此这应该可以工作,例如:for
循环将在StopIteration
上干净地退出,因此将进入else
子句。只有在没有par
的情况下,才应该提出StopIteration
,以避免遗漏最后一段。在相关问题 更多 >
编程相关推荐