我想写一个带有文件名,列号的函数。这将从csv文件中读取并返回列表中指定列的值。我需要用0替换空点并在它们存在时跳过标题。我需要一些帮助才能使它发挥作用。感谢
答案 0 :(得分: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)
将返回第1列的内容。
上面的代码忽略了没有列n
的所有行。如果您希望它填写默认的insted,请将列表推导替换为:
l = [ row[n] if len(row) > n else None for row in rdr ]
当然,你可以将None
变成你需要的任何东西。
最安全的选择就是使用:
l = [ row[n] for row in rdr ]
因为如果一行中缺少该字段,它将抛出异常。