需要明确的是,我对编程非常陌生,而且我正在使用 Python 3.3!现在我有很多文件具有相同的基本布局。每个文件有 9 列,以制表符分隔,标题行数量可变 - 但大多数文件有 5 行。行或列没有标题!
看起来像这样:
#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)
这为我提供了我正在寻找的信息,但一次只读取一个条目。我需要创建一个循环来读取包含数百个条目的整个文件..关于起点的建议?
我研究并发现了这一点:使用 csv 模块从 csv 文件读取特定列? https://stackoverflow.com/questions/16503560/read-specific-columns-from-csv-file-with-python-csv
它描述了类似的情况,但编码有点超出我的能力。由于我是新手,我很难将此示例应用到我的特定情况=(
这是我在迭代方面尝试过的:
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)
这给出了哦,如此可爱的“列表索引超出范围”错误消息。我真的很感激任何建议,谢谢!