首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:追加行后的列表不正确

Python:追加行后的列表不正确
EN

Stack Overflow用户
提问于 2015-07-29 21:11:07
回答 2查看 103关注 0票数 1

我试图将行添加到从文件中读取的空列表中,并且已经删除了返回行和换行符,但是一行应该作为两个单独的项输入到列表中。

代码语言:javascript
复制
DNA = open('DNAGCex.txt')
DNAID = []
DNASEQ = []
for line in DNA:
    line = line.rstrip()
    line = line.lstrip()
    if line.startswith('>')==True:
        DNAID.append(line)
    if line.startswith('>')==False:
        DNASEQ.append(line)
print DNAID
print DNASEQ

这是输出

'>Rosalind_6404','>Rosalind_5959','>Rosalind_0808‘

我想让它看起来像这样

'>Rosalind_6404','>Rosalind_5959','>Rosalind_0808‘

这是来源材料,只需删除“s”:

“>Rosalind_6404”CCTGCGGAAGATCGGCACTAGA '>Rosalind_5959‘CCTGCGGAAGATCGGCACTAGA '>Rosalind_0808’

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-29 21:23:57

您可以将.lstrip().rstrip()组合成一个.strip()调用。

然后,您会认为.append()将行添加到列表中,并将行连接到一行中。在这里,我们使用空字符串启动DNASEQ,并使用+=将行连接到一个长字符串中:

代码语言:javascript
复制
DNA = open('DNAGCex.txt')
DNAID = []
DNASEQ = []
for line in DNA:
    line = line.strip()
    if line.startswith('>'):
        DNAID.append(line)
        DNASEQ.append('')
    else:
        DNASEQ[-1] += line
print DNAID
print DNASEQ
票数 1
EN

Stack Overflow用户

发布于 2015-07-29 21:21:46

在循环的每一次迭代中,您只查看文件中的某一行。这意味着,虽然您确实是在追加末尾不包含linefeed的行,但您仍然在一次追加文件的一个行。您必须让解释器知道您希望合并某些行,方法是在第一次开始在DNASEQ中阅读时设置一个标志,并在下一个DNAID开始时清除它。

代码语言:javascript
复制
for line in DNA:
    line = line.strip() # gets both sides
    if line.startswith('>'):
        starting = True
        DNAID.append(line)
    elif starting:
        starting = False
        DNASEQ.append(line)
    else:
        DNASEQ[-1] += line
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31711192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档