【问题标题】:Delete Items from JSON-File - Python从 JSON 文件中删除项目 - Python
【发布时间】:2020-09-05 04:09:39
【问题描述】:

我有一个 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']

是否有可能删除这两个部分? 我解决了一个休息 API 并将 -get 保存到一个 JSON 文件中。 要继续使用 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"
}]

【问题讨论】:

  • 看起来,不是删除键,而是提取值:data["records"]

标签: python json api rest


【解决方案1】:

在 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"] 并将其存储在变量中。然后,您必须将其写入文件以保持持久性。

【讨论】:

    【解决方案2】:

    非常感谢,我学到了一些新东西。

    现在我可以继续处理文件并将其转换为 CSV。

    with open('data.json', 'w') as f:
        json.dump(records, f)
    
    df = pd.read_json('data.json')
    df.to_csv('data.csv')
    
    
    

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2022-12-12
      • 2015-04-26
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多