首页 > 解决方案 > Python 中的动态 CSV 标头

问题描述

我正在尝试通过 Python3 编写一个 csv 文件。

在将另一个文件解析为此 CSV 时,我不知道我将获得的确切列数,所以任何人都可以帮助我如何根据我在解析后收到的输入数量在我的 CSV 文件中编写动态标题。

下面是示例:

name,numberOfStudents,grade1,grade2,grade3, ... ,gradeN

等级数未知,这就是为什么我只需要一个序列作为标题。

我知道我可以写类似的东西,writerow(['name', 'numberOfStudents', 'grade1', 'grade2' ... ]但如果我确实获得超过 200 分(可能),情况就不是这样了

PS 我csv module在 Python 中使用,尤其writerow(row)是这个模块的方法。

标签: python

解决方案


您可以将 .csv 读取到字典中,然后获取密钥。

def read_csv_to_dict(file_path):
    with open(file_path) as f:
        a = [{k: v for k, v in row.items()} for row in csv.DictReader(f, skipinitialspace=True, delimiter=';')]
    return a

data = read_csv_to_dict('sample.csv')
print(data[0].keys())

根据需要修改数据。

然后使用类似的方法写入数据(字典列表,csv中每行一行)

def write_dict_to_csv(file_path, my_dict):
    keys = my_dict[0].keys()
    with open(file_path, 'w') as output_file:
        dict_writer = csv.DictWriter(output_file, keys, skipinitialspace=True, delimiter=';', lineterminator='\n')
        dict_writer.writeheader()
        dict_writer.writerows(my_dict)

推荐阅读