这可能是一个非常愚蠢的问题,但是我在网上到处找过,没有看到一个可靠的答案。
有没有一个简单的方法来做这样的事情?
lines = open('something.txt', 'r').readlines()
for line in lines:
if line == '!':
# force iteration forward twice
line.next().next()
<etc>
<>很容易在C++中完成;只是增加迭代器一个额外的时间。在Python中有一种简单的方法可以做到这一点吗?我只想指出,这个问题的主要目的并不是“阅读文件之类的”和跳过一些事情。我更希望寻找C++迭代器风格的迭代。另外,新标题有点傻,我不认为它反映了我问题的本质。
尝试:
您可能想在某个地方捕获
StopIteration
。如果迭代器完成,就会发生这种情况。这是短的,Python式的,有效的:
编辑:
正如许多人所观察到的,这还不是解决办法。我能想到的最好的办法就是把这一页上的内容结合起来:
readlines方法返回一个字符串列表,在列表上迭代不会让您修改循环体中的迭代。但是,如果首先在列表中调用iter,则会得到一个可以在循环体中修改的迭代器:
正如ebo指出的那样,file对象本身充当一个迭代器,因此您可以通过不调用readlines和不调用iter来获得相同的效果。
相关问题 更多 >
编程相关推荐