2015-01-16 2 views
0

У меня есть этот текстовый файл:Как читать строки в Python

>P1;3RVYA 

sequence::  : :  : :::-1.00:-1.00 
MYLRITNIVESSFFTKFIIYLIVLNGITMGLETSKTFMQSFGVYTTLFNQIVITIFTIEIILR-IYVHRISFFKD 
PWSLFDFFVVAISLVPTSS---GFEILRVLRVLRLFRLVTAVPQMRKIVSALISVIPGMLSVIALMTLFFYIFAI 
MATQLFGERFP---------------------------------------------EWFGTLGESFYTLFQVMTL 
ESWSMGIVRP-LMEVYPYAWVFFIPFIFVVTFVMINLVVAICVDAM* 

>P1;Dominio1 

sequence::  : :  : :::-1.00:-1.00 
EWPPFEYMILATIIANCIVLALEQH---LPDDDKTPMSERLDDTEPYFIGIFCFEAGIKIIALGFAFHKGSYLRN 
GWNVMDFVVVLTGILATVGTEFDLRTLRAVRVLRPLKLVSGIPSLQVVLKSIMKAMIPLLQIGLLLFFAILIFAI 
IGLEFYMGKFHTTCFEEGTDDIQGESPAPCGTEEPARTCPNGTKCQPYWEGPNNGITQFDNILFAVLTVFQCITM 
EGWTDLLYNSNDASGNTWNWLYFIPLIIIGSFFMLNLVLGVLSGEF* 

Мне нужно заменить слово «последовательность», то под слова 3RVYA (только для этого)

У меня есть это команда:

a="3RVYA" 
for line in file('%s'%I): 
     if a in line: 
      print line 

Но только напечатано «3RV», мне нужно только распечатать следующую строку, что есть слово «последовательность», мне это нужно, чтобы заменить «последовательность» для «структуры».

Я новичок в питоне, поэтому ... Может ли кто-нибудь помочь мне, пожалуйста? Большое спасибо

+4

Ваше название говорит «читать строки», текст говорит «заменить», и то, что ваш код делает печать ... Неясная:/ – Roberto

+0

У меня есть текст файл, и мне нужны следующие инструкции: 1.- поиск «3RVYA» 2.- В следующей строке (линия, которая находится под линией, имеющей 3RVYA), найдите слово «последовательность» и замените его на «структура» " Команда, которую у меня есть, только поиск слова« 3RVYA »в файле и ее печать, но я не знаю, как это сделать для замены слова следующей строки. –

+0

https://docs.python.org /2/library/re.html может быть удобно! –

ответ

1

Возможно, вы пытаетесь изменить текстовый файл на месте, выборочно меняя некоторые его части другими строками разной длины. Это не реально, из-за того, как файловые системы работают в настоящее время (то есть, побайтно). Тем не менее, модуль stdlib fileinput имитирует его хорошо (за занавесками он пишет новый файл, а затем в конце концов атомарно заменяет старый файл новым). Так ...:

import fileinput 
replacing = False 
for line in fileinput.input('thefile.txt', inplace=True): 
    if replacing and 'sequence' in line: 
     line = line.replace('sequence', 'structure') 
     replacing = False 
    elif '3RVYA' in line: 
     replacing = True 
    print line, 

Это Python 2; в Python 3, последняя строка становится, вместо:

print(line, end='') 
+0

Спасибо так много, но, с этим команды, у меня есть только файл с > 3RVYA мне нужно что-то вроде: до: > P1; 3RVYA последовательность ::::: ::: - 1.00: -1,00 MYLRITNIVESSFFTKFIIYLIVLNG * > Р1; Dominio1 последовательность ::::: ::: - 1.00: -1,00 EWPPFEYMILATIIANCIVLALEQHL * после того, как: > P1; 3RVYA структуры ::::: ::: - 1.00: -1,00 MYLRITNIVESSFFTKFIIYLIVLNGI * > P1; Dominio1 последовательности ::::: ::: - 1,00 : -1.00 WEGPNNGITQFDNILFAVLTVFQCITM * –

+0

@TereHs, с использованием отступов, которые я использовал (тщательно их воспроизведите!), Содержимое файла не изменяется, за исключением этой выборочной замены. Если вы видите только одну строку, вы, вероятно, испортили отступы, в частности, отделив «печать» в четыре пробела больше, чем нужно (используйте пробелы, ** не ** вкладки). –

+0

Итак ... Что я могу сделать? :(Я читаю прочитанное читать и ничего ... –

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