python错误地将列表写入文件

时间:2011-05-21 12:41:40

标签: python text-processing bioinformatics

我遇到了将列表写入文件的问题。我正在注释某些文件以将它们更改为某种格式,因此我读取序列对齐文件,将它们存储在列表中,进行必要的格式化,然后将它们写入新文件。问题是,虽然我的列表中包含序列比对的结构正确,但是将它们写入新文件时产生的输出是不正确的(它不会复制我的列表结构)。我只包括我输出的一部分以及它应该是什么样子,因为列表本身如果太长而无法发布。

输出到文件的输出:

>
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

1 个答案:

答案 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”拆分为两个“... 。“和”*“实际上从原来的

中删除换行符。