У меня проблема: Открываю файл и читаю его по строкам, ищем определенный узор. Когда я нашел его, я хотел бы написать всю строку AND THE NEXT TWO LINES в новый файл. Проблема заключается в том, что я не знаю, как получить от линии, которую я нашел на следующий 2.Найти строку, затем получить следующую строку
AAA
XXX
XXX
BBB
XXX
XXX
CCC
XXX
XXX
В этом примере было бы, что я считаю «В», и я хочу, чтобы получить следующие две строки.
Что мне делать? Большое вам спасибо за вашу любезную помощь!
Редактировать: Я понял, что должен уточнить.
Это код от моего коллеги
for k in range(0,len(watcrd)):
if cvt[k]>cvmin:
intwat+=1
sumcv+=cvt[k]
sumtrj+=trj[k]/((i+1)*sep/100)
endline='%5.2f %5.2f' % (cvt[k],trj[k]/((i+1)*sep/100)) # ivan
ftrj.write(watline[k][:55]+endline+'\n')
fall.write(watline[k][:55]+endline+'\n')
Для каждого k in range
я хотел бы написать k, k+1, k+2
в файл ftrj. Каков наилучший способ сделать это?
Редактировать 2: Извините, но я понял, что совершил ошибку. То, что вы предложили, работает, но я понял, что должен включить его в другую часть кода.
for line in lines[model[i]:model[i+1]]:
if line.startswith('ATOM'):
resi=line[22:26]
resn=line[17:20]
atn=line[12:16]
crd=[float(line[31:38]),float(line[38:46]),float(line[46:54])]
if (resn in noprot)==False and atn.strip().startswith('CA')==True:
protcrd.append(crd)
if (resn in reswat)==True and (atn.strip() in atwat)==True:
watcrd.append(crd)
watline.append(line)
Я думаю, что-то вроде этого:
(...)
if (resn in reswat)==True and (atn.strip() in atwat)==True:
watcrd.append(crd)
watline.append(line)
for i in range(1, 3):
try:
watcrd.append(crd[line + i])
watline.append(line[line + i])
except IndexError:
break
Но это не работает. Как я могу указать часть и строку, которую я хочу добавить в этот список?
из любопытства, это считается более «вещим», чем найти индекс и и получить '' 'линии [индекс: индекс +-]' ''? – wnnmaw
У вас нет индекса, когда вы выполняете итерацию по файлу. – Matthias
@wnnmaw: это считывает файл строки за строкой (с использованием буферизованного ввода-вывода), без необходимости сразу считывать весь файл в память. Это намного эффективнее, чем чтение всего файла в список, а затем управление списком. –