python - Python 中的动态 CSV 标头
问题描述
我正在尝试通过 Python3 编写一个 csv 文件。
在将另一个文件解析为此 CSV 时,我不知道我将获得的确切列数,所以任何人都可以帮助我如何根据我在解析后收到的输入数量在我的 CSV 文件中编写动态标题。
下面是示例:
name,numberOfStudents,grade1,grade2,grade3, ... ,gradeN
等级数未知,这就是为什么我只需要一个序列作为标题。
我知道我可以写类似的东西,writerow(['name', 'numberOfStudents', 'grade1', 'grade2' ... ]
但如果我确实获得超过 200 分(可能),情况就不是这样了
PS 我csv module
在 Python 中使用,尤其writerow(row)
是这个模块的方法。
解决方案
您可以将 .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)
推荐阅读
- javascript - 请求访问的帧具有“https”协议,被访问的帧具有“chrome-extension”协议。协议必须匹配
- javascript - 我如何在 Sequelize 中找到一小时后的值
- javascript - 如何为尝试在没有互联网的情况下连接到页面的人制作自定义错误页面?
- java - midi.Sequencer 的序列何时结束?
- python - 如何确定至少一个 2 项集是否在 3 项集列表中?
- amazon-web-services - 如何限制数据存储库站点上用户的公开下载?
- typescript - TypeScript:如何正确键入此 `groupBy` 函数
- python - Pycares (Setup.Py) 错误的构建轮
- javascript - 手风琴菜单有一个跳跃的过渡
- python - 如何调整散点图的标记大小,使其匹配给定的半径?(使用 matplotlib 转换)