我遇到了将列表写入文件的问题。我注释某些文件,将它们转换为某种格式,因此我读取序列对齐文件,将它们存储在列表中,进行必要的格式化,然后将它们写入新文件。问题是,当我的包含序列比对的列表结构正确时,将它们写入新文件时产生的输出不正确(它不会复制我的列表结构)。我只包括我的输出的一部分以及它应该是什么样子,因为列表本身太长而不能发布。python将一个列表写入文件不正确
输出写入文件:
>
TRFE_CHICK
From XALIGN
MKLILCTVLSLGIAAVCFAAP (seq spans multiple lines) ...
ADYIKAVSNLRKCS--TSRLLEAC*> (end of sequence, * should be on a newline, followed by > on a newline as well)
输出应该被写为:
>
TRFE_CHICK
From XALIGN
MKLILCTVLSLGIAAVCFAAP (seq spans many lines) ...
ADYIKAVSNLRKCS--TSRLLEAC
*
>
它确实在这个misformatting多次。我尝试过酸洗和取消清单,但是这会进一步造成错误。
我的用于产生的列表,并写入文件的代码:
new = []
for line in alignment1:
if line.endswith('*\n'):
new.append(line.strip('*\n'))
new.append('*')
else:
new.append(line)
new1 = []
for line in new:
if line.startswith('>'):
twolines = line[0] + '\n' + line[1:]
new1.append(twolines)
continue
else:
new1.append(line)
for line in new1:
alignfile_annot.write(line)
基本上,以便它的内容对准文件,插入序列的末端和*字符之间的线我已编码它和也使得ID后跟ID码总是在新的行上。这是我的列表建立的方式,但不是写入文件的方式。任何人都知道为什么错误格式? 道歉的长文,我试图保持尽可能短,以使我的问题明确 我运行的Python 2.6.5
你能提供样本输入吗?我想你可以用更少的代码来实现这个结果。 – garnertb 2011-05-21 13:07:44
输入是一个包含多个序列比对的ASCII文件。输入如下所示:> TRFE_HUMAN ...一个非常长的序列,然后在一个新行上跟随*> TRFE_MOUSE ...另一个长序列,然后是*。代码很长,因为我需要关注很多格式细节,例如将两行分割>和TRFE_MOUSE,并将*放在换行符 – Spyros 2011-05-21 13:19:30