Как посчитать количество строк после определенной строки

1

Я пытаюсь написать код, который будет подсчитывать количество строк после определенной строки. Я хотел бы вычислить все строки, которые появляются в моем файле после появления {A B} в моем файле

{A   B}
1     1
0.072 108.815
0.217 108.815
0.362 108.814

Мой код выглядит следующим образом:

from __future__ import with_statement
def file_len(fname):
   with open(fname) as f:
        for i, l in enumerate(f):
             pass
   return i + 1

t=file_len("test.ghx")
print t

Я не уверен, как это изменить, чтобы подсчитать количество строк после определенной строки, которая включает {A B}.

Может ли кто-нибудь поделиться некоторыми мыслями?

  • 2
    Это домашнее задание?
  • 0
    @user741592: user741592: Это довольно хороший способ подсчета строк. Обычное соглашение заключается в использовании _ в качестве имени переменной вместо l , так что вы показываете, что фактическое чтение строки не используется. Ответ Свена очень хороший, хотя, на мой взгляд.
Теги:

2 ответа

4
Лучший ответ

Пропустите строки до нужной строки и включите ее, и подсчитайте остальные:

def file_len(fname):
    with open(fname) as f:
        for line in f:
            if line.strip() == "{A   B}":
                break
        return sum(1 for line in f)
  • 0
    +1, но rstrip() , вероятно, действительно то, что вы имели в виду (вместо strip ), нет?
  • 0
    OP сказал «включает в себя {AB}», так что, возможно, if '{AB}' in line: это тест, за которым он следует - в этом случае, полоса не нужна. Кроме того, len(list(f)) ИМХО более очевиден, чем sum(1 for line in f) (хотя он немного менее эффективен, так как должен создавать список).
Показать ещё 4 комментария
1

Подсчитайте общее количество строк в файле, проверьте, в какой строке отображается ваш тег, вычитайте из общей суммы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню