扫描txt,在Python中将某些数据附加到空列表中

2024-05-15 09:30:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用python读取的文本文件。我试图从文本文件中提取关键字后面的某些元素,将它们附加到空列表中。文件如下所示:

enter image description here

所以我想列两张空名单

  • 第一个列表将附加序列名

  • 第二个列表是一个列表列表,其格式为[Bacteria,Phylum,Class,Order, Family, Genus, Species]

    大多数生物都是未经培养的细菌。我正在尝试添加未培养的细菌,其ID由以下ID分隔;

是否有必要扫描某个单词,当找到该单词时,取其后面的单词[用'\t'分隔]?

我需要它来创建一个序列名的字典来翻译成分类数据。在

我知道我需要一个空列表来附加姓名:

seq_names=[ ]

将分类列表放入的第二个列表

^{pr2}$

以及在每次迭代后将重置的第三个列表

temp = [ ]

我相信在Biopython中可以做到,但我正在努力提高我的python技能


Tags: 文件id元素列表格式分类序列关键字
2条回答

听起来你可能需要一个按序列名索引的字典。例如

my_data = {
           'some_sequence': [Bacteria,Phylum,Class,Order, Family, Genus, Species],
           'some_other_sequence': [Bacteria,Phylum,Class,Order, Family, Genus, Species]
          }

然后,您只需访问my_data['some_sequence']来提取关于该序列的数据。在

为了填充您的数据结构,我只需循环文件行,.split('\t')将它们分成“列”,然后执行类似my_data[the_row[0]] = [the_row[10], the_row[11], the_row[13]...]的操作将行加载到字典中。在

所以

^{pr2}$

是的,有办法。在

可以使用内置函数split将从文件读取到的字符串拆分为数组。从这里你可以找到你要找的单词的索引,然后用这个索引加一得到后面的单词。例如,使用名为测试文本看起来是这样(格式有点奇怪,因为so似乎不喜欢硬标签)。在

one two three   four    five    six seven   eight   nine

以下代码

^{pr2}$

将返回所需的“8”

编辑:返回列表中的每个单词

f = open('test.txt','r')

string = f.read()
words = string.split('\t')

desired = [words[ind+1] for ind, word in enumerate(words) if word == "seven"]

这是使用列表理解。它枚举单词列表,如果该单词是您要查找的,则将该单词包含在列表的下一个索引处。在

编辑2:要在新行和制表符上拆分它,可以使用正则表达式

import re
f = open('testtest.txt','r')

string = f.read()

words = re.split('\t|\n',string)

desired = [words[ind+1] for ind, word in enumerate(words) if word == "seven"]

相关问题 更多 >