【发布时间】:2017-06-17 06:17:47
【问题描述】:
我正在逐步浏览一个包含 3 行长记录的文本文件。如果在第一行中,我可以说“这是一条我不想计算的记录”,我想移动到下一条记录的开头,再往下 2 行。目前,我正在运行这样的代码 sn-p:
lines = content.split("\n")
iterable = iter(xrange(len(lines)))
for i in iterable:
line = lines[i]
...
if isRecord(keyword) == False:
[iterable.next() for x in range(2)]
在文件的最后,我的理解可能会抛出一个 stopIteration 错误。如何添加到我的代码中,以便如果我提出一个 stopIteration,它将打破 for 循环?我查看了一些关于列表推导的条目,以及如何构建 for 循环以根据 stopIteration 标志停止,但我还不明白如何将其应用于我自己的代码。我还看到了带有 if/else/for 样式的列表推导,但是我可以构建一个具有如下样式的列表推导:
[iterable.next() for x in range(2) else break]
衷心感谢大家的帮助。
【问题讨论】:
-
假设当你点击下一个时还剩下 1 或 0 个项目。这应该创建长度为 1 或 0 的列表,还是应该是某种错误?
-
好问题!这应该打破记录处理,开始处理不同的文件。有没有一种方法可以让我在推进列表之前知道列表中还有多少元素?
标签: python for-loop list-comprehension stopiteration