通过列解析CSV文件并存入列表

0 投票
1 回答
560 浏览
提问于 2025-04-18 12:09

我想写一个函数,这个函数需要接收一个文件名和一个列号。它会从一个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 ]

因为如果某一行缺少这个字段,它会抛出一个错误。

撰写回答