【问题标题】:Python: joining multiple lines into a single line/string and appending it to a listPython:将多行加入单个行/字符串并将其附加到列表中
【发布时间】:2015-03-29 17:45:27
【问题描述】:

基本上我有一个文本文件,我正在逐行阅读它。我想将一些行(文本的一部分)合并到一个字符串中,并将其作为一个元素添加到列表中。

我想组合的这些文本部分以字母“gi”开头并以“>”结尾。我可以成功地隔离这部分文本,但我无法以任何方式对其进行操作,我希望它是一个单一变量,就像一个单独的实体一样。到目前为止,它只是在列表中添加单行。

def lines(File):
    dataFile = open(File)
    list =[]
    for letters in dataFile:
        start = letters.find("gi") + 2 
        end = letters.find(">", start)
        unit = letters[start:end]
        list.append(unit)
    return list

这是一个例子: https://www.dropbox.com/s/1cwv2spfcpp0q0s/pythonmafft.txt?dl=0

因此,我希望将文件中的每个条目作为单个字符串进行操作,并能够将其附加到列表中。每个条目都由几个空行分隔。

【问题讨论】:

  • 给定您的文件,显示您想要获得的内容的示例。你可能还想试试能很好地处理 fasta 文件的 Biopython。
  • 我只想将单个序列作为单个字符串处理,因此它在列表中占用一个空间,因此我可以随后将其放入字典中,并使用适当的键。但我就是不能让它那样做,它会添加一行或整个文本。
  • 你应该看看 biopython 然后:biopython.org/DIST/docs/tutorial/Tutorial.html#htoc49
  • 这看起来很有希望,谢谢你的信息。我会给它一个bash :)

标签: python string list merge line


【解决方案1】:

首先,不要使用list 作为变量名。 list 是一个内置函数,每次在代码中的其他位置分配相同的名称时都会覆盖它。尝试使用更具描述性的一般名称,您将很容易避免这个陷阱。

有一种更简单的方法可以完成您的要求,因为'>gi'(在您提供的示例中)被放在一起。你可以简单地使用 split ,它会给你单位(没有'>gi')。

def lines(File):
    dataFile = open(File)
    wordlist = dataFile.read().split('>gi')
    return wordlist

【讨论】:

  • 谢谢,我是从非英语语言翻译变量,因此犯了愚蠢的错误:)。但除此之外,我仍然无法将“wordlist”定义为单个条目的文本量添加到列表中,它只是添加文件中的整个文本。
猜你喜欢
  • 2023-03-22
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 2021-06-26
  • 1970-01-01
  • 2018-11-06
相关资源
最近更新 更多