按列解析csv文件并存储在列表中

时间:2014-07-04 21:25:16

标签: python csv

我想写一个带有文件名,列号的函数。这将从csv文件中读取并返回列表中指定列的值。我需要用0替换空点并在它们存在时跳过标题。我需要一些帮助才能使它发挥作用。感谢

1 个答案:

答案 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 ]

因为如果一行中缺少该字段,它将抛出异常。