我正在撰寫一個腳本來從檔案中讀取 JSON,然后將某些內容提取到不同的表中。我能夠從檔案中讀取并決議出書籍串列(在示例中)。問題是因為我正在寫入表格,所以并非每個串列都具有相同的欄位。我想在 JSON.So 中發送默認值,這是我擁有的 JSON。我想最終撰寫 JSON
{
"books": [
{
"field1": "value",
"field2": "value",
"field3": "value"
},
{
"field1": "value",
"field2": [
"value"
],
"field3": "value",
"field4": "value"
},
{
"field1": "value",
"field2": "value",
"field3": "value",
"field4": "value",
"field5": "value"
}
]
}
我正在嘗試將這些值寫入 csv。我認為下一個中間步驟可能是具有如下所示的扁平結構。所以基本上是空字串,然后我可以將其寫入 CSV。如果有人有建議,我不清楚該怎么做。謝謝!
[
{
"field1": "value",
"field2": "value",
"field3": "value",
"field4": "",
"field5": ""
},
{
"field1": "value",
"field2": [
"value"
],
"field3": "value",
"field4": "value",
"field5": ""
},
{
"field1": "value",
"field2": "value",
"field3": "value",
"field4": "value",
"field5": "value"
}
]
uj5u.com熱心網友回復:
使用 Pandas 庫更容易做到這一點。下面的示例代碼
import numpy as np
import pandas as pd
d = {
"books": [
{
"field1": "value",
"field2": "value",
"field3": "value"
},
{
"field1": "value",
"field2": [
"value"
],
"field3": "value",
"field4": "value"
},
{
"field1": "value",
"field2": "value",
"field3": "value",
"field4": "value",
"field5": "value"
}
]
}
df = pd.DataFrame.from_dict(d['books'])
df.fillna("", inplace = True)
csv = df.to_csv(index = False)
print(csv)
uj5u.com熱心網友回復:
您可以將默認值字典與資料字典合并,以生成默認值。請參閱下面的示例方法:
books: list = {
"books": [
{
"field1": "value",
"field2": "value",
"field3": "value"
},
{
"field1": "value",
"field2": [
"value"
],
"field3": "value",
"field4": "value"
},
{
"field1": "value",
"field2": "value",
"field3": "value",
"field4": "value",
"field5": "value"
}
]
}.get("books")
# find all keys and get a unique set
keys_list = []
[keys_list.extend(book.keys()) for book in books]
all_keys = set(keys_list)
# Generate a default dict
default = {key: "" for key in all_keys}
# Generate a list dicts with default merged values
flattened_list =[{**default, **book} for book in books]
#Write a CSV file
import csv
with open("books.csv", 'w') as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=all_keys)
writer.writeheader()
writer.writerows(flattened_list)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/400258.html
