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

Python 如何从没有标题的CSV文件中提取值?,python,python-2.7,csv,python-3.x,Python,Python 2.7,Csv,Python 3.x,我有一个.csv文件,其中包含一列值(ID)。 当我使用csv.Dictreader时,每一行都是一个字典,其中键是列中的第一个值(因为它使用它作为标题),值是行中存在的ID 我不能简单地跳过第一行(如果文件有一个标题,我就可以跳过),因为我也需要第一行的ID。手动添加标题也不是一个选项 如何从这样的文件中提取所有ID作为列表? 我现在正在做以下工作: def returnIDs(IDfile):# extract the IDs IDs = [] with open(IDfil

我有一个.csv文件,其中包含一列值(ID)。 当我使用csv.Dictreader时,每一行都是一个字典,其中键是列中的第一个值(因为它使用它作为标题),值是行中存在的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

但是,我相信有一种更为通俗的方法来实现这一点。

如果您知道列的名称,可以在调用中指定它们。然后它将不使用第一行作为列名,您可以按名称从该行获取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)

那是行不通的。我的.csv文件没有标题(如问题中所述)。我通过以下代码解决了这个问题:def returnIDs(IDfile):IDs=[],open(IDfile)为f:reader=csv。reader:IDs中的行的reader(f,delimiter='')append(row)IDs=[item for sublist in IDs for item in sublist]return IDs它没有标题,但是您可以提供一个列名列表(即使您只是自己编的)。然后DictReader将不会尝试使用第一行作为标题行,并且您可以按指定的名称访问每行的字段。使用csv.reader和按列号获取字段也可以,但通常使用列名会使代码更具可读性。