Python如何逐段阅读文本

2024-03-29 11:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个Python初学者,我正在尝试阅读示例.txt使用iteratornext方法逐段归档。问题是,如果不使用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')

Tags: to方法textselftxtforreturnif
1条回答
网友
1楼 · 发布于 2024-03-29 11:29:38

所以您需要实际使用self.text,因为这是一个文件迭代器(f),也就是说,您需要调用next(self.text)。您需要多次调用此函数来使用所有行,直到收到一个blank like,因此需要一个循环。一个for循环将调用next(self.text),因此这应该可以工作,例如:

def __next__(self):
    par = []
    for line in self.text:
        if line.isspace():
            break
        par.append(line.strip())
    else:
        if not par:
            raise StopIteration()
    return ' '.join(par)

for循环将在StopIteration上干净地退出,因此将进入else子句。只有在没有par的情况下,才应该提出StopIteration,以避免遗漏最后一段。在

相关问题 更多 >