Python-处理CSV数据时如何忽略第一行数据?

发布于 2021-02-02 23:15:25

我要Python从一列CSV数据中打印最少的数字,但是第一行是列号,我不希望Python将第一行考虑在内。如何确定Python忽略第一行?

到目前为止,这是代码:

import csv

with open('all16.csv', 'rb') as inf:
    incsv = csv.reader(inf)
    column = 1                
    datatype = float          
    data = (datatype(column) for row in incsv)   
    least_value = min(data)

print least_value

你还能解释你在做什么,而不仅仅是给出代码吗?我对Python非常陌生,并希望确保我了解所有内容。

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

    你可以使用csv模块Sniffer类的实例来推断CSV文件的格式,并检测是否存在标头行以及next()仅在必要时才跳过第一行的内置函数:

    import csv
    
    with open('all16.csv', 'r', newline='') as file:
        has_header = csv.Sniffer().has_header(file.read(1024))
        file.seek(0)  # Rewind.
        reader = csv.reader(file)
        if has_header:
            next(reader)  # Skip header row.
        column = 1
        datatype = float
        data = (datatype(row[column]) for row in reader)
        least_value = min(data)
    
    print(least_value)
    

    由于在你的示例中datatype和column都进行了硬编码,因此这样处理起来会稍快一些row:

        data = (float(row[1]) for row in reader)
    

    注意:上面的代码适用于Python3.x。对于Python 2.x,使用以下行来打开文件而不是显示的内容:

    with open('all16.csv', 'rb') as file:
    


知识点
面圈网VIP题库

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

去下载看看