python - 如何将 JSON 列表转换为 CSV 文件中的两个不同列?
问题描述
这是我在这个壮观的网站上的第一个问题,我需要知道如何将复杂信息从 JSON 导出到 CSV。问题是我需要从列中的列表中获得两个不同的值。
我尝试了很多不同的组合,但我做不到,所以我最后的资源之一被要求提供给社区。我的代码是这样的:
def output(alerts):
output = list()
for alert in alerts:
applications = alerts['applications']
for app in applications:
categories = app['categories']
for cat in categories:
output_alert = [list(cat.items())[0], app['confidence'], app['icon'],
app['name'], app['version'], app['website'], alerts['language'], alerts['status']]
output.append(output_alert)
df = pd.DataFrame(output, columns=['Categories', 'Confidence', 'Icon', 'Name', 'Version', 'Website',
'Language', 'Status'])
df.to_csv(args.output)
print('Scan completed, you already have your new CSV file')
return
我在 B 列中给你留了一张 CSV 文件的图片(我在那里有一个列表),但实际上我需要两列,每个值...
我附加了来自 REST API 的 JSON 响应
{'applications': [{'categories': [{'59': 'JavaScript libraries'}],
'confidence': '100',
'icon': 'Lo-dash.png',
'name': 'Lodash',
'version': '4.17.15',
'website': 'http://www.lodash.com'},
{'categories': [{'12': 'JavaScript frameworks'}],
'confidence': '100',
'icon': 'RequireJS.png',
'name': 'RequireJS',
'version': '2.3.6',
'website': 'http://requirejs.org'},
{'categories': [{'13': 'Issue trackers'}],
'confidence': '100',
'icon': 'Sentry.svg',
'name': 'Sentry',
'version': '4.6.2',
'website': 'https://sentry.io/'},
{'categories': [{'1': 'CMS'},
{'6': 'Ecommerce'},
{'11': 'Blogs'}],
'confidence': '100',
'icon': 'Wix.png',
'name': 'Wix',
'version': None,
'website': 'https://www.wix.com'},
{'categories': [{'59': 'JavaScript libraries'}],
'confidence': '100',
'icon': 'Zepto.png',
'name': 'Zepto',
'version': None,
'website': 'http://zeptojs.com'},
{'categories': [{'19': 'Miscellaneous'}],
'confidence': '100',
'icon': 'webpack.svg',
'name': 'webpack',
'version': None,
'website': 'https://webpack.js.org/'},
{'categories': [{'12': 'JavaScript frameworks'}],
'confidence': '0',
'icon': 'React.png',
'name': 'React',
'version': None,
'website': 'https://reactjs.org'}], 'language': 'es', 'status': 'success'}
[{'59': 'JavaScript library'}]最后这件事是我的大问题!感谢您的时间和帮助!
解决方案
您可以尝试list(cat.keys())[0], list(cat.values())[0]
在output_alert
变量中使用分别提取键和值。
推荐阅读
- c# - 将类型动态分配给 List
并用反序列化的 json 填充它 - c# - 变换.旋转(0f,180f,0f);旋转 2D 精灵,但不是子精灵
- solr - Apache Solr JSON 查询本地参数
- html - Angular:组件高度仅到屏幕
- ms-access - 需要遍历 ListBox 以从布尔字段中提取具有真值的记录
- python - 如何修复 PyCharm Mac OS 上的“ModuleNotFoundError”
- ubuntu - 即使卸载后,Memcached 仍在监听(Ubuntu)
- javascript - 图像上下动画/显示和隐藏
- python - 如何使用 pandas 列值作为其他数据框中的查找
- python - 将类的名称传递给函数,分配给方法之外的类属性