我有一个类似这样的文件:
prot17
MAGQDPRLRGEPLKHVLVIDDDVAMRHLIVEYLTIHAFKVTAVADSKQFNRVLCSETVDVVVVDLNLGREDGLEIVRSLATKSDVPIIIISGARLEEADKVIALELGATDFIAKPFGTRE
prot4711
AAGQDVRLRGEPL ---- VIDDDVAMRHLIVEYLTIDAFKVTAVADSKQFNRVLCSETVDVVVVDTILGFEDGLEIVDSLATKSDVPIIII
我想将每一行限制为最多60个字符,但仍保留原始的新行,这意味着我仍然希望“prot”开始一行(我在python中使用textwrap时不会得到):
有人有什么想法吗?
答案 0 :(得分:0)
您需要读取整个文件并将其放入变量并使用\n
拆分并连接结果,然后使用len 60
拆分新列表,然后将其写入新文件:
f1=open('file1.txt','r').read()
conected=''.join(f1.split('\n'))
new_split=[conected[i:i+60] for i in range(0,len(conected),60)]
with open('new.txt','w') as f :
for line in new_split :
f.write(line+'\n')
new.txt:
prot17MAGQDPRLRGEPLKHVLVIDDDVAMRHLIVEYLTIHAFKVTAVADSKQFNRVLC
SETVDVVVVDLNLGREDGLEIVRSLATKSDVPIIIISGARLEEADKVIALELGATDFIAK
PFGTREprot4711AAGQDVRLRGEPL----VIDDDVAMRHLIVEYLTIDAFKVTAVADS
KQFNRVLCSETVDVVVVDTILGFEDGLEIVDSLATKSDVPIIII
答案 1 :(得分:0)
您只需逐行读取文件,然后按最多60个字符的块写入每行。
类似的东西:
with open("input.txt", "r") as fdin, open("output.txt", "w") as fdout:
for i in fdin:
while(len(i) > 60):
fdout.write(i[:60] + "\n")
i = i[60:]
fdout.write(i)