通过列解析CSV文件并存入列表
我想写一个函数,这个函数需要接收一个文件名和一个列号。它会从一个csv文件中读取数据,并返回指定列的值,结果以列表的形式呈现。我还需要把空白的地方替换成0,并且在有表头的情况下跳过表头。我需要一些帮助来让这个功能正常工作。谢谢!
1 个回答
1
这样做就可以了
import csv
def get_column(filename, n, header=True):
with open(filename, 'r') as csvfile:
rdr = csv.reader(csvfile)
# skip one row if header is True
if header:
next(rdr, None)
# take only the rows where the field exists
l = [ row[n] for row in rdr if len(row) > n]
return l
这里的列是从0开始编号的,也就是说,get_column("mycsv.csv", 0)
会返回第一列的内容。
上面的代码会忽略掉所有没有第 n
列的行。如果你想让它用一个默认值来填充这些空缺,可以把列表推导式换成:
l = [ row[n] if len(row) > n else None for row in rdr ]
当然,你可以把 None
改成你需要的任何值。
最安全的做法是直接使用:
l = [ row[n] for row in rdr ]
因为如果某一行缺少这个字段,它会抛出一个错误。