python - 如何在 Python 中将 ndjson 文件转换为 csv 文件?
问题描述
我目前的文件加载如下:
import ndjson
with open('full_simplified_arm.ndjson') as f:
data = ndjson.load(f)
但是,我想将此文件转换为 Python 中的 csv,并且想知道如何执行此操作?谢谢
解决方案
你可以用csv.DictWriter
.
用 加载数据ndjson.load
,以这种形式存储。
[{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Carol'}]
您可以将列表中第一项中的键作为表的字段名。
fields = data[0].keys()
然后定义一个csv.DictWriter
来写标题和行。
writer = csv.DictWriter(f, fieldnames=fields)
writer.writeheader()
for item in data:
writer.writerow(item)
完整的解决方案:
import csv
import ndjson
with open('./users.ndjson', 'r') as f:
data = ndjson.load(f)
with open('./users.csv', 'w', newline='') as f:
# I'm assuming that each item has the same keys
fields = data[0].keys()
writer = csv.DictWriter(f, fieldnames=fields)
writer.writeheader()
for item in data:
writer.writerow(item)
输入
{"id":1,"name":"Alice"}
{"id":2,"name":"Bob"}
{"id":3,"name":"Carol"}
输出
id,name
1,Alice
2,Bob
3,Carol
注:样本数据来源于网络
推荐阅读
- c - C 指针:来自不兼容指针类型的赋值
- asp.net-mvc - Icollection 不包含任何
- spring-boot - 来自 Tomcat 的 Spring Boot 配置文件位置
- c++ - 'operator[]' 的多个重载实例化为相同的签名
- linux - Jenkins 无法执行现有的二进制文件
- javascript - 如何关闭 as.net 中的 2 个页面并刷新网格
- node.js - 无法在 Azure 上使用 Knex 迁移生产数据库
- c++ - 传递唯一指针子作为参考
- c# - 带有 IIS AAR 的 C# WCF 无法处理元数据
- node.js - 在 Express JS Api 中使用 Put 方法时,是否需要使用正文解析器?