Я пытаюсь написать код, который будет подсчитывать количество строк после определенной строки. Я хотел бы вычислить все строки, которые появляются в моем файле после появления {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}.
Может ли кто-нибудь поделиться некоторыми мыслями?
Пропустите строки до нужной строки и включите ее, и подсчитайте остальные:
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)
rstrip()
, вероятно, действительно то, что вы имели в виду (вместо strip
), нет?
if '{AB}' in line:
это тест, за которым он следует - в этом случае, полоса не нужна. Кроме того, len(list(f))
ИМХО более очевиден, чем sum(1 for line in f)
(хотя он немного менее эффективен, так как должен создавать список).
Подсчитайте общее количество строк в файле, проверьте, в какой строке отображается ваш тег, вычитайте из общей суммы.
_
в качестве имени переменной вместоl
, так что вы показываете, что фактическое чтение строки не используется. Ответ Свена очень хороший, хотя, на мой взгляд.