我有一个.csv文件,其中包含一列值(ID)。 当我使用csv.Dictreader时,每一行都是一个字典,其中键是列中的第一个值(因为它将它用作标题),value是行中存在的ID。
我不能简单地跳过第一行(我可以在文件有标题的情况下完成),因为我也需要第一行的ID。手动添加标题也不是一种选择。
如何从列表中提取所有ID? 我现在正在做以下事情:
def returnIDs(IDfile):# extract the IDs
IDs = []
with open(IDfile) as f:
reader = csv.DictReader(f)
for row in reader:
for key, value in row.iteritems():
IDs.append(key)
IDs.append(value)
return (list(set(IDs))) # to remove the repetetive keys
但是,我确信有更多的Pythonic方法可以实现这一目标。
答案 0 :(得分:2)
如果您知道列的名称,则可以在DictReader
的调用中指定它们。然后它不会使用第一行作为列名,您可以按名称从行中获取ID。
def returnIDs(IDfile):# extract the IDs
IDs = set()
with open(IDfile) as f:
reader = csv.DictReader(f, fieldnames=['ID', 'other', 'fields'])
for row in reader:
IDs.add(row['ID'])
return list(IDs)