我有一个大的JSON文件(400k行)。我试图孤立以下内容:
策略-“说明”
策略项-“用户”和“数据库值”
JSON文件-https://pastebin.com/hv8mLfgx
熊猫的预期产量:https://imgur.com/a/FVcNGsZ
“Policy Items”之后的所有内容在整个文件中都是完全相同的。我尝试了下面的代码来隔离“用户”。它似乎不起作用,我正在尝试将所有这些都转储到CSV中。在
这里是一个我试图尝试的解决方案,但无法使其正常工作-Deeply nested JSON response to pandas dataframe
from pandas.io.json import json_normalize as Jnormal
import json
import pprint, csv
import re
with open("Ranger_Policies_20190204_195010.json") as file:
jsonDF = json.load(file)
for item in jsonDF['policies'][0]['policyItems'][0]:
print ('{} - {} - {}'.format(jsonDF['users']))
编辑2:我有一些工作代码,可以抓住一些用户,但它没有抓住所有的用户。25人中只有11人。在
^{pr2}$编辑3:这是最后的工作副本,但是我仍然没有复制我所有的表数据。我设置了一个循环来忽略一切。捕捉所有的东西,我会在Excel中进行排序,有人知道为什么我不能捕捉所有的表值吗?在
json_data = json.load(file)
with open("test.csv", 'w', newline='') as fd:
wr = csv.writer(fd)
wr.writerow(('Database name', 'Users', 'Description', 'Table'))
for policy in json_data['policies']:
desc = policy['description']
db_values = policy['resources']['database']['values']
db_tables = policy['resources']['table']['values']
for item in policy['policyItems']:
users = item['users']
for dbT in db_tables:
for user in users:
for db in db_values:
_ = wr.writerow((db, user, desc, dbT))```
Pandas在这里被过度使用了:csv标准模块就足够了。您只需在策略上迭代以提取描述和数据库值,然后在policyItems上迭代以提取用户:
这里有一种方法,假设您的
json
数据在一个名为json_data
的变量中在}上测试
Python 3.5.1
和{相关问题 更多 >
编程相关推荐