在python中读取JSON文件,读取一个值并将其赋值给一个变量



我有一个json文件,看起来像

{
"0": {
"id": 1700388,
"title": "Disconnect: The Wedding Planner",
"year": 2023,
"imdb_id": "tt24640474",
"tmdb_id": 1063242,
"tmdb_type": "movie",
"type": "movie"
},
"1": {
"id": 1631017,
"title": "The Pale Blue Eye",
"year": 2022,
"imdb_id": "tt14138650",
"tmdb_id": 800815,
"tmdb_type": "movie",
"type": "movie"
},
"2": {
"id": 1597915,
"title": "The Man from Toronto",
"year": 2022,
"imdb_id": "tt11671006",
"tmdb_id": 667739,
"tmdb_type": "movie",
"type": "movie"
},

我正在尝试阅读这个并提取"tmbd_id"作为变量存储。然后我打算将它注入到api get请求的url中。

下一步是将响应参数添加到json文件。然后将它们全部添加到一个循环中。有1000个条目

我一直在尝试使用其他答案,但我怀疑我的json的性质是导致问题的整数名称导致问题。它一直给我这个错误

for I in data['0']:TypeError:列表索引必须是整数或切片,而不是str

您可以使用json.loads读取文件的内容,然后迭代查找这些id:

import json
tmdb_ids = []
with open('test.json', 'r') as json_fp:
imdb_info = json.load(json_fp)[0]
for dict_index, inner_dict in imdb_info.items():
tmdb_ids.append(inner_dict['tmdb_id'])
print(tmdb_ids)

结果:

[1063242, 800815, 667739]

如果您需要来自特定"电影"的特定tmdb_id,则可以使其更复杂。通过在for循环中添加一些if语句,选择您想要的电影。


编辑

我注意到这是一个字典数组,因此我们可以遍历每个"电影块"。并从中提取tmdb_id:


with open('test.json', 'r') as json_fp:
imdb_info = json.load(json_fp)
tmdb_ids = [movie_info['tmdb_id'] for movies_chunk in imdb_info for movie_index, movie_info in movies_chunk.items()]

for reading json:

import json
with open("file.json","r") as file:
text = json.load(file)

tmbd_id:

for i in text:
print(text[i]["tmdb_id"])

最新更新