【发布时间】:2022-09-23 21:21:15
【问题描述】:
我有一个像这样的示例 JSON 文件
data = {
\"type\": \"video\",
\"videoID\": \"vid001\",
\"links\": [
{\"type\": \"video\", \"videoID\": \"vid002\", \"links\": []},
{\"type\": \"video\",
\"videoID\": \"vid003\",
\"links\": [
{\"type\": \"video\", \"videoID\": \"vid004\"},
{\"type\": \"video\", \"videoID\": \"vid005\"},
]
},
{\"type\": \"video\", \"videoID\": \"vid006\"},
{\"type\": \"video\",
\"videoID\": \"vid007\",
\"links\": [
{\"type\": \"video\", \"videoID\": \"vid008\", \"links\": [
{\"type\": \"video\",
\"videoID\": \"vid009\",
\"links\": [{\"type\": \"video\", \"videoID\": \"vid010\"}]
}
]}
]},
]
}
我只需要服用特定的键和值从 json 文件并将其转换为 CSV 文件
代码:参考:Extracting Specific Keys/Values From A Messed-Up JSON File (Python)
def extract(data, keys):
out = []
queue = [data]
while len(queue) > 0:
current = queue.pop(0)
if type(current) == dict:
for key in keys:
if key in current:
out.append({key: current[key]})
for val in current.values():
if type(val) in [list, dict]:
queue.append(val)
elif type(current) == list:
queue.extend(current)
return out
x = extract(data, [\"videoID\",\"type\"])
print(pd.DataFrame.from_dict(x))
当我通过 extract() 传递 2 个值时,在两者之间获取 NaN result
videoID type
0 vid001 NaN
1 NaN video
2 vid002 NaN
3 NaN video
4 vid003 NaN
5 NaN video
6 vid006 NaN
7 NaN video
8 vid007 NaN
9 NaN video
10 vid004 NaN
11 NaN video
12 vid005 NaN
13 NaN video
14 vid008 NaN
15 NaN video
16 vid009 NaN
17 NaN video
18 vid010 NaN
19 NaN video
我需要得到如下输出
videoID type
0 vid001 video
1 vid002 video
2 vid003 video
3 vid004 video
etc...
并将其转换为 csv 文件,有人可以帮我解决这个问题吗
标签: python json pandas api csv