使用textwrap但也保存python中的原始新行

时间:2014-11-07 10:38:58

标签: python textwrapping

我有一个类似这样的文件:

prot17

MAGQDPRLRGEPLKHVLVIDDDVAMRHLIVEYLTIHAFKVTAVADSKQFNRVLCSETVDVVVVDLNLGREDGLEIVRSLATKSDVPIIIISGARLEEADKVIALELGATDFIAKPFGTRE

prot4711

AAGQDVRLRGEPL ---- VIDDDVAMRHLIVEYLTIDAFKVTAVADSKQFNRVLCSETVDVVVVDTILGFEDGLEIVDSLATKSDVPIIII

我想将每一行限制为最多60个字符,但仍保留原始的新行,这意味着我仍然希望“prot”开始一行(我在python中使用textwrap时不会得到):

有人有什么想法吗?

2 个答案:

答案 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)