【问题标题】:Extract data from a JSON file using python使用python从JSON文件中提取数据
【发布时间】:2021-03-27 18:31:39
【问题描述】:

如果我有如下 JSON 条目(通过从 Firebase DB 获取数据生成的 JSON 文件):

[{"goal_savings": 0.0, "social_id": "", "score": 0, "country": "BR", "photo": "http://graph.facebook", "id": "", "plates": 3, "rcu": null, "name": "", "email": ".", "provider": "facebook", "phone": "", "savings": [], "privacyPolicyAccepted": true, "currentRole": "RoleType.PERSONAL", "empty_lives_date": null, "userId": "", "authentication_token": "-------", "onboard_status": "ONBOARDING_WIZARD", "fcmToken": ----------", "level": 1, "dni": "", "social_token": "", "lives": 10, "bills": [{"date": "2020-12-10", "role": "RoleType.PERSONAL", "name": "Supermercado", "category": "feeding", "periodicity": "PeriodicityType.NONE", "value": 100.0"}], "payments": [], "goals": [], "goalTransactions": [], "incomes": [], "achievements": [{"created_at":", "name": ""}]}]

如何提取与列 'bills' 中存在的 'value' 对应的内容。有什么办法吗?

我的python代码如下。有了这个,我只能在账单列中获取数据。但我只需要与账单中存在的“价值”相对应的条目。

import json
filedata = open('firebase-dataset.json','r')
data = json.load(filedata)
listoffields = []   # To produce it into a list with fields 
for dic in data:
    try:
        listoffields.append(dic['bills'])   # only non-essential bill categories.
    except KeyError:
        pass
print(listoffields)  

【问题讨论】:

  • 您的 JSON 在多个地方格式不正确。
  • 我该怎么做,实际上我运行了 fetcher.py 来生成 JSON 并生成了这个文件。
  • 来自 Firebase 数据库
  • 嗨,如果你有空,我们可以安排视频通话,以便我可以共享我的屏幕并向你显示我的代码输出吗?
  • 其实我是用诗歌来获取数据集并转换为json文件

标签: json python-3.x list parsing firebase-realtime-database


【解决方案1】:

您发布的 JSON 包含错误的引号。 我认为您正在尝试提取账单中“价值”列的值。

试试这个

print(listoffields[0][0]['value'])

这会将您打印为 100.0 作为 str。使用 float() 在计算中使用它。

---编辑--- 假设您拥有的 JSON 包含许多用逗号分隔的 JSON 对象。

[{ first-entry },{ second-entry },{ third.. }, ....and so on]

..你想在每个 JSON 对象中找到每个账单的价值.. 可能下面的代码会起作用。-

bill_value_list = []     # to store 'value' of each bill
for bill_list in listoffields:
    bill_value_list.append(float(bill_list[0]['value']))    # blill_list[0]  will contain complete bill dictionary.

print(bill_value_list)    

print(sum(bill_value_list))   # do something usefull

将其粘贴在您发布的代码之后。(您的代码无需更改......因为它始终有效:-)

【讨论】:

  • 好的,但是有很多这样的条目,每个条目都包含账单。那么如何提取所有账单呢?谢谢马恩!
  • 我希望编辑后的答案对您有用。不客气:-)..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 2021-11-24
  • 2017-04-16
  • 2020-05-06
  • 2017-04-03
  • 2019-01-22
相关资源
最近更新 更多