我要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非常陌生,并希望确保我了解所有内容。
你可以使用csv模块Sniffer类的实例来推断CSV文件的格式,并检测是否存在标头行以及next()仅在必要时才跳过第一行的内置函数:
csv
Sniffer
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: