请注意,我很新手,并且正在使用Python 3.3编程!现在,我有很多基本布局相同的文件。每个文件有9列,用制表符分隔,并且标题行数量不固定 - 大多数文件有五行标题。行和列都没有标题!
大致如下:
#header1
#header2
#header3
#header4
#header5
ID1 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes1..
ID2 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes2..
ID3 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes3..
ID4 asdf asdk asdfk asdfkl adsfkln askdlfn safsda asdf Notes4..
我只需要第一列包含ID的信息和最后一列包含有关每个ID的注释。 我想要一个类似于此的字典:
{'ID1': [notes1...]
'ID2': [notes2...]....
'ID1234': [notes1234...]}
但是如果只有字典的列表或类似的东西,我也很满意。因此,我首先将文本转换成一个列表,以便我可以通过索引查找条目:
import csv
list_all = list(csv.reader(open(r'complex_tabbed_file.gff', 'rb'), delimiter='\t'))
d = dict()
ID = data[5][0] #starting at 5 to skip the header lines
notes = data[5][8]
d[ID]= notes
print (d)
这给了我需要的信息,但一次只读取一个条目。我需要创建一个循环,来读取包含数百个条目的整个文件。有什么建议可以作为起点吗?
我调查了并找到了这个链接:Read specific columns from a csv file with csv module?,其中描述了类似的情况,但编码有些超出我的能力范围。由于我是新手,很难将这个例子应用到我的特定情况中。
下面是我尝试迭代的代码:
i=0
if i < 4:
i= i+1
if i >= 5:
ID = list_all[i][0]
notes = list_all[i][8]
i= i+1
print (d)
这将返回一个空字典 ( d={ } ),不好。
还尝试过:
d = dict()
i=5
for line in list_all:
ID = list_all[i][0]
notes = list_all[i][8]
i = i+1
print (d)
这会导致非常可爱的“索引超出范围”错误消息。如果您有任何建议,我会非常感激,谢谢!