在Python中将嵌套JSON文件转换为CSV
我有一个json文件,其中包含嵌套的键和值。我的要求是数据采用csv格式,csv文件应包含以下详细信息在Python中将嵌套JSON文件转换为CSV,python,json,csv,Python,Json,Csv,我有一个json文件,其中包含嵌套的键和值。我的要求是数据采用csv格式,csv文件应包含以下详细信息 name title emails updatTime roles 这是我的密码: import json import csv with open ("D:\Python_Tolusko/IICS_Users.json") as file: data=json.load(file) fname='D:\Python_Tolusko/output.csv
name title emails updatTime roles
这是我的密码:
import json
import csv
with open ("D:\Python_Tolusko/IICS_Users.json") as file:
data=json.load(file)
fname='D:\Python_Tolusko/output.csv'
with open(fname,"w") as file:
csv_file=csv.writer(file)
csv_file.writerow(["name","title","emails","updateTime","roles"])
for item in data:
csv_file.writerow([item['name'],item['title'],item['emails'],item['updateTime'],item['roles']['name']])
#rec=(value for value in data.roles.name())
#csv_file.writerow(rec)
然而,在运行代码时,我发现以下错误
TypeError Traceback (most recent call last)
<ipython-input-2-e810dd9e7ace> in <module>
11 csv_file.writerow(["name","title","emails","updateTime","roles"])
12 for item in data:
---> 13 csv_file.writerow([item['name'],item['title'],item['emails'],item['updateTime'],item['roles']['name']])
14 #rec=(value for value in data.roles.name())
15 #csv_file.writerow(rec)
TypeError: list indices must be integers or slices, not str
请帮助我如何为相应的用户提供所需的角色
提前感谢。您的数据中缺少字段,如果有,我建议使用
。获取词典的选项
诸如此类
jsonfile = open('data.json', 'r').read()
csvfile = open('data.csv', 'w', newline='')
rows = json.loads(jsonfile)
output = []
for row in rows:
outrow = [row.get('name'),
row.get('title'),
row.get('emails'),
row.get('updateTime'),
row.get('roles')]
output.append(outrow)
writer = csv.writer(csvfile)
writer.writerows(output)
对于放置整数的版本,您在之前缺少了一个]谢谢您的评论。我的坏消息我错过了它,我更新了它,现在它给出了以下错误------------------------------------------------------------------->13 csv_文件。writerow([item['name',item['title',item['emails',item['updateTime',item['roles'][1] ])索引器错误:列表索引超出范围更新您的问题-可能对于此条目item['roles']
只有一个条目,即索引0。最初我尝试使用item['roles']但在这种情况下,所有与角色相关的值都会出现,因此认为应该使用索引来更新它,但使用索引0时,它也会给出索引超出范围的错误。也许角色是一个空列表-IDK您必须检查它-这是您的数据!
[
{
"@type": "user",
"id": "017Q3A0300000000000C",
"name": "Abc",
"updateTime": "2021-04-07T09:54:06.000Z",
"title": "Dev",
"password": "********",
"phone": "9999999999",
"emails": "abc@gmail.com",
"roles": [
{
"@type": "role",
"name": "MDM Business User",
"description": "Role used for MDM C360 Business Application runtime."
},
{
"@type": "role",
"name": "Customer 360 Data Steward",
"description": "MDM Customer 360 Data Steward"
},
{
"@type": "role",
"name": "Data Viewer",
"description": "Role used for granting access for data"
},
{
"@type": "role",
"name": "Designer",
"description": "Role for creating assets, tasks, and processes. Can configure connections, schedules, and runtime environments. Has access to the Application Integration Console."
},
{
"@type": "role",
"name": "Business Manager",
"description": "Role used for business managers"
},
{
"@type": "role",
"name": "MDM Designer",
"description": "MDM Designer"
},
{
"@type": "role",
"name": "Admin",
"description": "Role for performing administrative tasks for an organization. Has full access to all licensed services."
},
{
"@type": "role",
"name": "Deployer",
"description": "Role used by deployer"
},
{
"@type": "role",
"name": "Operator",
"description": "Role used for monitoring execution environments"
},
{
"@type": "role",
"name": "Monitor",
"description": "Role used for application monitor"
},
{
"@type": "role",
"name": "Customer 360 Manager",
"description": "MDM Customer 360 Manager"
},
{
"@type": "role",
"name": "Data Preview",
"description": "Role to preview data"
},
{
"@type": "role",
"name": "Service Consumer",
"description": "Role for running tasks, taskflows, and processes."
},
{
"@type": "role",
"name": "Customer 360 Analyst",
"description": "MDM Customer 360 Analyst"
},
{
"@type": "role",
"name": "Data Integration Task Executor",
"description": "Role to run Data Integration tasks"
}
]
},
{
"@type": "user",
"id": "017Q3A03000000000002",
"name": "Admin",
"updateTime": "2021-05-28T12:51:44.000Z",
"title": "Admin",
"password": "********",
"phone": "9999999999",
"emails": "Admin@123.com",
"roles": [
{
"@type": "role",
"name": "Designer",
"description": "Role for creating assets, tasks, and processes. Can configure connections, schedules, and runtime environments. Has access to the Application Integration Console."
}
]
},
{
"@type": "user",
"id": "017Q3A0300000000000G",
"orgId": "017Q3A",
"name": "Xyz",
"title": "Developer",
"password": "********",
"phone": "9999999999",
"emails": "xyz@123.com",
"roles": [
{
"@type": "role",
"name": "Customer 360 Manager",
"description": "MDM Customer 360 Manager"
},
{
"@type": "role",
"name": "Data Preview",
"description": "Role to preview data"
},
{
"@type": "role",
"name": "Designer",
"description": "Role for creating assets, tasks, and processes. Can configure connections, schedules, and runtime environments. Has access to the Application Integration Console."
},
{
"@type": "role",
"name": "Data Viewer",
"description": "Role used for granting access for data"
},
{
"@type": "role",
"name": "Data Integration Task Executor",
"description": "Role to run Data Integration tasks"
},
{
"@type": "role",
"name": "Admin",
"description": "Role for performing administrative tasks for an organization. Has full access to all licensed services."
},
{
"@type": "role",
"name": "Customer 360 Data Steward",
"description": "MDM Customer 360 Data Steward"
},
{
"@type": "role",
"name": "Service Consumer",
"description": "Role for running tasks, taskflows, and processes."
},
{
"@type": "role",
"name": "MDM Designer",
"description": "MDM Designer"
},
{
"@type": "role",
"name": "MDM Business User",
"description": "Role used for MDM C360 Business Application runtime."
},
{
"@type": "role",
"name": "Customer 360 Analyst",
"description": "MDM Customer 360 Analyst"
},
{
"@type": "role",
"name": "Monitor",
"description": "Role used for application monitor"
},
{
"@type": "role",
"name": "Business Manager",
"description": "Role used for business managers"
},
{
"@type": "role",
"name": "Deployer",
"description": "Role used by deployer"
},
{
"@type": "role",
"name": "Operator",
"description": "Role used for monitoring execution environments"
}
]
}
]
jsonfile = open('data.json', 'r').read()
csvfile = open('data.csv', 'w', newline='')
rows = json.loads(jsonfile)
output = []
for row in rows:
outrow = [row.get('name'),
row.get('title'),
row.get('emails'),
row.get('updateTime'),
row.get('roles')]
output.append(outrow)
writer = csv.writer(csvfile)
writer.writerows(output)