[英]complex json file to csv in python
我需要使用python將復雜的json文件轉換為csv,我嘗試了很多代碼都沒有成功,我來這里尋求幫助,我更新了問題,json文件大約一百萬,我需要將它們轉換為csv格式
.csv 文件
{
"_id": {
"$oid": "2e3230"
},
"add": {
"address1": {
"address": "kvartira 14",
"zipcode": "10005",
},
"name": "Evgiya Kovava",
"address2": {
"country": "US",
"country_name": "NY",
}
}
}
{
"_id": {
"$oid": "2d118c8bo"
},
"add": {
"address1": {
"address": "kvartira 14",
"zipcode": "52805",
},
"name": "Eiya tceva",
"address2": {
"country": "US",
"country_name": "TX",
}
}
}
import pandas as pd
null = 'null'
data = {
"_id": {
"$oid": "2e3230s314i5dc07e118c8bo"
},
"add": {
"address": {
"address_type": "Door",
"address": "kvartira 14",
"city": "new york",
"region": null,
"zipcode": "10005",
},
"name": "Evgeniya Kovantceva",
"type": "Private person",
"code": null,
"additional_phone_nums": null,
"email": null,
"notifications": [],
"address": {
"address": "kvartira 14",
"city": "new york",
"region": null,
"zipcode": "10005",
"country": "US",
"country_name": "NY",
}
}
}
df = pd.json_normalize(data)
df.to_csv('yourpath.csv')
注意空值。 “地址”嵌套字典在“添加”中兩次幾乎相同?
編輯
好的,在您提供信息之后,您需要的是 json.JSONDecoder() 。
最初由@pschill 在此鏈接上發布: 如何分析不以逗號分隔的 json 對象(最好在 Python 中)
我在您的數據上嘗試了他的代碼:
import json
import pandas as pd
data = """{
"_id": {
"$oid": "2e3230"
},
"add": {
"address1": {
"address": "kvartira 14",
"zipcode": "10005"
},
"name": "Evgiya Kovava",
"address2": {
"country": "US",
"country_name": "NY"
}
}
}
{
"_id": {
"$oid": "2d118c8bo"
},
"add": {
"address1": {
"address": "kvartira 14",
"zipcode": "52805"
},
"name": "Eiya tceva",
"address2": {
"country": "US",
"country_name": "TX"
}
}
}"""
請記住,您的數據也有尾隨逗號,這使數據不可讀(每個右括號之前的最后一個逗號)。
您必須使用一些正則表達式或我不熟悉的其他方法來刪除它們。 出於此答案的目的,我手動刪除了它們。
所以在那之后我嘗試了這個:
content = data
parsed_values = []
decoder = json.JSONDecoder()
while content:
value, new_start = decoder.raw_decode(content)
content = content[new_start:].strip()
# You can handle the value directly in this loop:
# print("Parsed:", value)
# Or you can store it in a container and use it later:
parsed_values.append(value)
這給了我一個錯誤,但列表似乎填充了所有值:
parsed_values
[{'_id': {'$oid': '2e3230'},
'add': {'address1': {'address': 'kvartira 14', 'zipcode': '10005'},
'name': 'Evgiya Kovava',
'address2': {'country': 'US', 'country_name': 'NY'}}},
{'_id': {'$oid': '2d118c8bo'},
'add': {'address1': {'address': 'kvartira 14', 'zipcode': '52805'},
'name': 'Eiya tceva',
'address2': {'country': 'US', 'country_name': 'TX'}}}]
接下來我做了:
df = pd.json_normalize(parsed_values)
效果很好。 您可以隨時將其保存到 csv 中:
df.to_csv('yourpath.csv')
告訴我這是否有幫助。
畢竟你的 json 是很成問題的。 重復的鍵(問題),空值(不可讀),尾隨逗號(不可讀),不是逗號分隔的字典......一開始並沒有引起注意:P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.