2014-06-13 112 views
-4

我想迭代一个文件,但是如果满足条件则停留在选定的行上。 示例代码:在Python中对文件进行迭代

for line in file: 
    if 'bla' in line: 
    //dont increase line position, so next iteration will be on the same line. 

我不想使用里面的“如果”另一个循环。 如果条件满足,并且行号例如为1,则在下一次迭代中,同一行将在行变量中(行号仍将是1)。

谢谢。

+5

**为什么重复然后**。为什么你不能在当前迭代*中使用*来做任何你需要的行*? –

+0

请建议您的解决方案。 –

+2

我完全不清楚你最初想做什么。 –

回答

0

你可以尝试这样的事情:

keywords = ['blah', 'foo', 'ok', 'bar'] 
file = open('myfile.txt') 

for line, index in enumerate(file): 
    for i in keywords: 
     if i in line: 
      print "{0} was found in line {1}.".format(i, index) 

但是,如果这是不正确,请edit your question,因为它是非常不清楚你在问什么。

+0

如果不清楚你怎么回答? –

+0

我用我的心理技巧 –

+0

他们必须工作得很好,因为从这个问题来看,实际上不可能提供答案。 –

1

它是更容易简单地使用两个循环。

for line in file: 
    while 'bla' in line: 
     # no iterating done in here 
1

不是使用for循环,而是使用while循环并自己完成迭代。这个例子很蹩脚,因为它在你看到'blah'后没有显示如何前进,但我认为你在那里计划了一些魔法。

with open('x') as fp: 
    try: 
     line = next(fp) 
     while True: 
      if 'bla' in line: 
       // not increasing line position 
      else: 
       line = next(fp) 
    except StopIteration: 
     pass