尝试从JSON文件中读取数据TypeError:列表索引必须是整数或片,而不是str

2024-05-15 09:52:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我在课堂上正在做的一个项目读一些FitBit数据。 该文件是一个JSON,我以前从未使用过它。我试图用Python来阅读它,但我总是会遇到错误

我能够将数据转换成python字典,但是我很难分离出我想要的值。我正在尝试选择“bpm”后面的所有值,以便用它们构建一个数组

我收到的输出是:

========== RESTART: C:\Users\Addy\Physical Activity\JSON Import.py ==========
Traceback (most recent call last):
  File "C:\Users\Addy\Physical Activity\JSON Import.py", line 13, in <module>
    for i in data['values']:
TypeError: list indices must be integers or slices, not str

我明白为什么我会得到它,我也看到过其他例子,人们用整数值来搜索项目,但我认为这对我没什么帮助

以下是到目前为止我所掌握的,以及我试图阅读的数据:

import json 
  
# Opening JSON file 
f = open('/Users/Addy/Physical Activity/heart_rate-2020-10-06.json',)
  
# returns JSON object as  
# a dictionary

data = json.loads(f.read()) 
  
# Iterating through the json 
# list 
for i in data['values']: 
    print(i)

f.close() 
  
print(data) 
 [{'dateTime': '10/06/20 20:05:01', 'value': {'bpm': 69, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:11', 'value': {'bpm': 68, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:21', 'value': {'bpm': 70, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:26', 'value': {'bpm': 71, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:31', 'value': {'bpm': 72, 'confidence': 1}}, {'dateTime': '10/06/20 20:05:46', 'value': {'bpm': 73, 'confidence': 1}}, {'dateTime': '10/06/20 20:06:01', 'value': {'bpm': 76, 'confidence': 1}}, {'dateTime': '10/06/20 20:06:06', 'value': {'bpm': 75, 'confidence': 1}}, {'dateTime': '10/06/20 20:06:16', 'value': {'bpm': 72, 'confidence': 1}}] 

Tags: 数据项目inimportjsondatadatetimevalue
2条回答

data是一个列表,而不是字典,因此您可以直接使用它

for i in data: 
    print(i)

数据是listdicts,然后键value的值再次是dict,您需要键bpm的值

import json 

with open('/Users/Addy/Physical Activity/heart_rate-2020-10-06.json') as f:
    data = json.load(f) 

bpm = [item['value']['bpm'] for item in data]
print(bpm)

相关问题 更多 >