单独读取csv文件中的列名

发布于 2021-01-29 15:07:32

我有一个包含以下各列的csv文件:

身份证,姓名,年龄,性别

接下来是以上各列的很多值。我试图单独读取列名称,并将其放在列表中。

我正在使用Dictreader,它给出了正确的细节:

with open('details.csv') as csvfile:
    i=["name","age","sex"]
    re=csv.DictReader(csvfile)
    for row in re:
        for x in i:
            print row[x]

但是我想做的是,我需要使用输入csv自动解析列列表(在上述情况下为“ i”),而不是在列表中进行硬编码。

with open('details.csv') as csvfile:

    rows=iter(csv.reader(csvfile)).next()
    header=rows[1:]
    re=csv.DictReader(csvfile)
    for row in re:
        print row
        for x in header:

            print row[x]

这给出了一个错误

Keyerrror:'name'

在行打印行[x]中。我要去哪里错了?是否可以使用Dictreader提取列名称?请帮助。谢谢并恭祝安康。

关注者
0
被浏览
70
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用该next()函数读取标头,该函数将读者可迭代对象的下一行作为列表返回。然后您可以将文件的内容添加到列表中。

    import csv
    with open("C:/path/to/.filecsv", "rb") as f:
        reader = csv.reader(f)
        i = reader.next()
        rest = list(reader)
    

    现在,我将列的名称作为列表。

    print i
    >>>['id', 'name', 'age', 'sex']
    

    还要注意,reader.next()它在python 3中不起作用。而是next()在读取后立即使用inbuilt来获取csv的第一行,如下所示:

    import csv
    with open("C:/path/to/.filecsv", "rb") as f:
        reader = csv.reader(f)
        i = next(reader)
    
        print(i)
        >>>['id', 'name', 'age', 'sex']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看