如何读取python中的行

时间:2015-01-16 16:00:53

标签: 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”,我只需打印下一行,其中包含“序列”一词,我需要将“序列”替换为“结构”。

我是python的初学者,所以...有人可以帮助我吗? 非常感谢

1 个答案:

答案 0 :(得分: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='')