如何从没有标题的CSV文件中提取值?

时间:2015-06-16 08:15:48

标签: python python-2.7 csv python-3.x

我有一个.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方法可以实现这一目标。

1 个答案:

答案 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)