2015-04-03 2 views
0

Я новичок в python. Мне нужно прочитать первые 11 строк, затем пропустить следующие 9 строк и прочитать два, пропустить следующие 9 строк и прочитать два до конца файла.python читает файл и пропускает n строк и читает снова и пропускает

Я ценю любую помощь.

+2

хорошо для вас. Что вы пробовали? Переполнение стека не является кодовым письмом. Отправьте свою попытку, образец ввода, ожидаемый результат, фактический вывод и полный текст любых трассировок или ошибок. – MattDMo

+0

Возможный дубликат [Незначительная переменная цикла в Python] (http://stackoverflow.com/questions/29434734/not-recognizing-loop-variable-in-python) – TigerhawkT3

+0

@ TigerhawkT3 Как это дубликат этого вопроса? – Bakuriu

ответ

0

Вы можете использовать islice() в itertools модуль для чтения "срезов" строк из файла с помощью функции generator:

import itertools 

def lines_of_interest(filename): 
    with open(filename, 'r') as inf: 
     for line in itertools.islice(inf, 11): # yield the first 11 lines 
      yield line 
     while True: 
      # out of next 11 lines, skip 9 and keep last 2 
      lines = list(itertools.islice(inf, 9, 11)) 
      for line in lines: 
       yield line 
      if not lines: # end-of-file? 
       break 

Пример использования:

# create a test file 
with open('data.dat', 'w') as outf: 
    for i in xrange(1, 110): 
     outf.write('line #%d\n' % i) 

for line in lines_of_interest('data.dat'): 
    # process line... 
    print line, 
1

Вот общая идея:
1. читать строки из файла в список с помощью readlines()
2. Используйте цикл для цикла по индексам линий
3. Использование если заявления в цикл, чтобы пропустить соответствующие строки.

MattDMo является правильным. Это поможет, если вы покажете нам свою попытку.

Смежные вопросы