我有这个文本文件:
>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的初学者,所以...有人可以帮助我吗? 非常感谢
答案 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='')