我希望使用 Python 将一些标记数据读入数据结构。到目前为止,我已经成功地将每个标记名称读取到一个列表中(其中有 2,000 个)。
我的数据本来是在Excel中,但我把它转换成了一个.txt文件。
文件中的头数据被删除并使用 readline() 分配给变量。
带有标记名称的每一行都以双引号 (") 开头,因此我能够轻松获取该信息并将其存储为列表。
包含该标记数据的每一行缩进 2 个空格,并且有些行以“a”、“b”或“h”开头。我想把这些变成一个数据结构。我已经尝试过列表和字符串,但都返回为空。每个标记名称下的数据是一个由“a”、“b”和“h”三个字母组成的 block ,每个字母代表种群中的一个个体(共有 250 个)。棘手的是,有 5 个字母由一个空格分隔,但这些 5 个字母的 block 与其他 5 个字母的 block 由两个空格分隔。
例子:
"BK_12 (a,h,b) ; 1"
b a a a b a b a a a b a b a a a a a a a a a a b b a a b a h b
a a a a a a a a a a a a a a a a b a a a a h a a a a a a a a h
a a b a a a h a a a a h a h a a a a a a a a b a a a a a a h a
a a a b a a a a a a a a b a a b b a b a h a b a a a b a a a h
a a a a
那部分我真的不需要帮助,只是为了引用文件的外观。我的最终目标是使用表型数据来查找与特定表型相关的标记。
到目前为止,我使用 for 循环来完成此操作。我的代码如下。编辑:我尝试从位置 2 开始索引,而不是从位置 0 开始搜索空白空间。我认为这会起作用。 else: 语句是为了告诉我它是否识别 elif 语句。没有返回任何内容,所以我假设它在这方面正在工作,但它没有附加。
Markers = []
Genotype_Data = []
for line in infile:
line=line.rstrip()
if (line[0] == '"'):
line=line.rstrip()
Markers.append(line)
elif (line[2] == 'a'):
line=line.rstrip()
Genotype_Data.append(line)
elif (line[2] == 'b'):
line=line.rstrip()
Genotype_Data.append(line)
elif (line[2] == 'h'):
line=line.rstrip()
Genotype_Data.append(line)
else:
print("Something isn't right!")
最佳答案
我不明白你的目标是什么。
也许这可以帮助您实现它:
print(line.split()) # just a and b, ...
['b', 'a', 'a', 'a', 'b', 'a', 'b', 'a', 'a', 'a', 'b', 'a', 'b', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'a', 'a', 'b', 'a', 'h', 'b']
>>> print(line.split(' ')) # a b, ... and '' where a new block starts
['', '', 'b', 'a', 'a', 'a', 'b', '', 'a', 'b', 'a', 'a', 'a', '', 'b', 'a', 'b', 'a', 'a', '', 'a', 'a', 'a', 'a', 'a', '', 'a', 'a', 'a', 'b', 'b', '', 'a', 'a', 'b', 'a', 'h', '', 'b', '', '', '']
>>> ' x x '.strip()
'x x'
关于Python:当格式不标准时,如何使 for 循环将数据附加到列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731112/