我有一个包含对象列表的json文件
[ {
"infos": [
{ "localisation": "Kassel" },
{ "date": "01.08.2023" },
{ "places": "1 freier Platz" }
],
"applying email": "exemple@starke.ma",
"additional infos": {
"name": "jhon",
"position": "RH",
"email": "email@email.com" }
},
{
"infos": [
{ "places": "1 freier Platz" }
],
"applying email": "",
"applying link": "www.exemple.com",
"additional infos": {
"name": "jhon",
"position": "RH",
"email": "email@email.com"
}
},]
我想把它转换成csv文件(该对象包含其他字段,但我想使尽可能简单)问题是,该文件包含嵌套对象和嵌套对象中的一些字段从列表中的其他对象中丢失,如您在信息字段中所看到的(在列表的第一个项目中,您可以在信息字段下看到本地化字段,但在列表的第二个对象中缺少),我想要实现的是,我的csv文件头将包含所有字段(也包括丢失的字段),如果在向JSON对象追加数据时没有找到丢失的字段,我想要忽略它并让该位置为空
3条答案
按热度按时间7rtdyuoh1#
我更喜欢用
DataFrame.to_csv
保存到CSV,Pandas也有一个json_normalize
方法,这可能是最短的方法来扁平化它,但我不太确定如何处理infos
列表。但是,如果将JSON解析为python字典列表(
pData
)然后,在转换为Pandas Dataframe 并另存为CSV之前,您可以使用
flattenObj
函数(view examples)将其扁平化:lvjbypge2#
Python有一个叫“csv”的模块,它有阅读CSV文件的方法,你可以使用csv.DictReader()方法将JSON文件读入CSV文件,该方法接受JSON对象,将其转换为csv文件,并返回一个reader对象,该对象可用于迭代生成的csv文件的行。
vyswwuz23#
我在最近的一个项目中遇到了类似的问题。我使用了内置的csv模块
这里假设你已经有了你需要的格式的数据,在我的例子中,我传递给函数的字典列表。2它一次读一个字典,根据field_names中定义的键名把每条记录放到相应的行中。
我是个新手,所以我可能是以一种非常低效的方式做的,但它对我很有效。