StopIteration由使用嵌套循环的文件迭代给出

2024-09-27 23:02:20 发布

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

我对下面的代码块有一些问题。 我要做的是逐行遍历一个文件,然后拉出包含“.W”的行后面的行,直到它到达以“.I”开头的行

with open("cran.all.1400","r") as abstracts:
abstract_list = []
for line in abstracts:
    if (line.startswith(".W")):
        abstract_string = ""
        while not (line.startswith('.I')):
            abstract_string = abstract_string + line
            abstracts.next()
        abstract_list.append(abstract_string)

我遇到了StopIteration,一些google告诉我当.next()没有值时会发生这种情况,但是我不确定我应该如何编写代码。你知道吗

具体来说,我不确定的是,如何让while循环继续通过这些行,并让for循环在while循环停止的地方重新开始。你知道吗


Tags: 文件代码abstractforstringaswithline
1条回答
网友
1楼 · 发布于 2024-09-27 23:02:20

在for循环中使用标志:

with open("cran.all.1400") as abstracts:
    inside = False
    abstract_list = []
    for line in abstracts:
        if line.startswith(".W"):
            inside = True
            abstract_list.append("")
        elif line.startswith(".I"):
            inside = False
        elif inside:
            abstract_list[-1] += line

相关问题 更多 >

    热门问题