我遇到了将列表写入文件的问题。我正在注释某些文件以将它们更改为某种格式,因此我读取序列对齐文件,将它们存储在列表中,进行必要的格式化,然后将它们写入新文件。问题是,虽然我的列表中包含序列比对的结构正确,但是将它们写入新文件时产生的输出是不正确的(它不会复制我的列表结构)。我只包括我输出的一部分以及它应该是什么样子,因为列表本身如果太长而无法发布。
输出到文件的输出:
>
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
*
>
多次错误格式化。我已经尝试过腌制和取消列表,但是进一步误解了它。
我生成列表和写入文件的代码:
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代码总是在新行上。这是我的列表的构建方式,而不是它写入文件的方式。任何人都知道为什么错误格式化? 对于长篇文章道歉,我尽量让它尽可能地缩短,以使我的问题清楚 我正在运行Python 2.6.5
答案 0 :(得分:3)
new.append(line.strip('*\n'))
new.append('*')
你有一个行列表(每行有一行换行符),所以你需要为这两行包含\ n:
new.append(line[:-2] + "\n") # slice as you just checked line.endswith("*\n")
new.append("*\n")
记住条带(或切片,因为我已将其更改为)将删除换行符,因此将列表中的单个项目的值“... * \ n”拆分为两个“... 。“和”*“实际上从原来的
中删除换行符。