如何在python中读取行

2024-03-28 10:18:47 发布

您现在位置: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*

我需要替换单词“sequence”,它在单词3RVYA的下面(仅此)

我有这个命令:

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

但刚打印“3RV”,我只需要打印下一行,即有“序列”一词,我需要它取代“序列”为“结构”。你知道吗

我是python的初学者,所以…有人能帮我吗? 非常感谢


Tags: inline序列单词sequence文本文件p1mylritnivessfftkfiiylivlngitmgletsktfmqsfgvyttlfnqivitiftieiilr
1条回答
网友
1楼 · 发布于 2024-03-28 10:18:47

您似乎试图通过有选择地使用其他长度不同的字符串更改文本文件的某些部分来就地修改文本文件。这实际上是不可能的,因为现在文件系统的工作方式(即逐字节)。然而,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='')

相关问题 更多 >