我有一个JSON文件,想删除开头和结尾部分
{
"records":
[{
"id":"53c5d162-3dd4-41ea-afd1-378b5be1bf04",
"userid":"u111124027",
"username":"Testuser",
"deviceid":"1185494411",
"devicename":"",
"start_date":"2020-05-19T06:46:55Z",
"fee":0.0,
"currency":"None",
"billing_state":"Bill",
"contact_id":"c410618636"
}],
"records_remaining":0
}
要删除的零件
{
"records": ,
"records_remaining":0
}
删除零件的代码
for element in data:
if 'records' in element:
del element['records']
错误:
del element['records']
TypeError: 'str' object does not support item deletion
如果我手动删除部件,则可以通过以下方式操作JSON
if 'userid' in element:
del element['userid']
是否可以删除两个部分? 我解决了rest API,并将-get保存到JSON-File中。 要继续使用JSON文件,我必须删除这两部分
最后,json文件应如下所示:
[{
"id":"53c5d162-3dd4-41ea-afd1-378b5be1bf04",
"userid":"u111124027",
"username":"Testuser",
"deviceid":"1185494411",
"devicename":"",
"start_date":"2020-05-19T06:46:55Z",
"fee":0.0,
"currency":"None",
"billing_state":"Bill",
"contact_id":"c410618636"
}]
答案 0 :(得分:2)
在Python中加载JSON对象非常容易。 Python有一个称为json的内置程序包,可用于处理JSON数据。这是通过使用json模块完成的,该模块为我们提供了很多方法,其中load()和load()方法将帮助我们读取JSON文件。
JSON的反序列化
JSON的反序列化意味着将JSON对象转换为它们各自的Python对象。使用load()/ loads()方法。如果您已使用其他程序的JSON数据或以JSON的字符串格式获取了数据,则可以使用load()/ loads()(通常用于从字符串加载)轻松对其进行反序列化,否则,根对象位于list或字典。
json.load(): json.load()接受文件对象,解析JSON数据,使用数据填充Python字典并将其返回给您。
语法:
json.loads(file object)
从json正常读取将是-
# Python program to read
# json file
import json
# Opening JSON file
f = open('data.json',)
# returns JSON object as
# a dictionary
data = json.load(f)
# saving the records array
records = data["records"]
# Iterating through the json
# list from records array
for i in data['records']:
print(i)
# Closing file
f.close()
现在根据您的用例,您只需要记录,而没有来自json的其他键。而不是将其从json中删除,您可以使用data["records"]
来解决问题。
但是,如果仍然要删除它,则可以使用json中的data["records"]
并将其存储在变量中。然后,您必须将其写入文件中以保持持久性。
答案 1 :(得分:1)
非常感谢,我学到了一些新东西。
现在,我可以继续使用该文件并将其转换为CSV。
with open('data.json', 'w') as f:
json.dump(records, f)
df = pd.read_json('data.json')
df.to_csv('data.csv')