将json文件中的数据提取到csv中

2024-05-16 00:21:35 发布

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

我是处理json文件的新手,希望能得到一些帮助。 这是我正在处理的json文件的一部分(因为这对我来说太多了,无法全部发布)

[{"id":804,"name":{"english":"Naganadel","japanese":"\u30a2\u30fc\u30b4\u30e8\u30f3"},"type":["Poison","Dragon"],"base":{"HP":73,"Attack":73,"Defense":73,"Sp. Attack":127,"Sp. Defense":73,"Speed":121}},{"id":805,"name":{"english":"Stakataka","japanese":"\u30c4\u30f3\u30c7\u30c4\u30f3\u30c7"},"type":["Rock","Steel"],"base":{"HP":61,"Attack":131,"Defense":211,"Sp. Attack":53,"Sp. Defense":101,"Speed":13}},{"id":806,"name":{"english":"Blacephalon","japanese":"\u30ba\u30ac\u30c9\u30fc\u30f3"},"type":["Fire","Ghost"],"base":{"HP":53,"Attack":127,"Defense":53,"Sp. Attack":151,"Sp. Defense":79,"Speed":107}},{"id":807,"name":{"english":"Zeraora","japanese":"\u30bc\u30e9\u30aa\u30e9"},"type":["Electric"],"base":{"HP":88,"Attack":112,"Defense":75,"Sp. Attack":102,"Sp. Defense":80,"Speed":143}},{"id":808,"name":{"english":"Meltan","japanese":"\u30e1\u30eb\u30bf\u30f3"},"type":["Steel"],"base":{"HP":46,"Attack":65,"Defense":65,"Sp. Attack":55,"Sp. Defense":35,"Speed":34}},{"id":809,"name":{"english":"Melmetal","japanese":"\u30e1\u30eb\u30e1\u30bf\u30eb"},"type":["Steel"],"base":{"HP":135,"Attack":143,"Defense":143,"Sp. Attack":80,"Sp. Defense":65,"Speed":34}}]

我正在尝试获取每个口袋妖怪的id、名称、类型、基础、hp、攻击、防御和速度。我附上了我目前拥有的东西,其中包括我试图获取id并打印它

当我运行这个文件时,我得到的列表索引必须是整数或片,而不是str

import json

def main():

    f = open('pokedex.json')
    data = json.load(f)
    f.close()
    #print data
    id_poke = data['_embedded']['id_poke']
    id_info = []
    for i in id_poke:
        id_poke.append(i['id'])


if __name__ == '__main__':
    main()

Tags: 文件nameidjsonbaseenglishtypesp
2条回答

申报

id_poke = data['_embedded']['id_poke']

As str()

看看你在问题中包含的json示例:它以[开头,这意味着它是一个列表,而不是一个字典。当您将此对象分配给变量data,然后尝试使用(字符串)键_embedded索引到此列表时,您会看到错误

我不知道您希望它如何工作,因为您的json文件既没有_embedded也没有id_poke作为键,但是为了让您开始,下面是如何打印每个对象的数字id和英文名称;你可以从那里拿走

for poke in data:   # magic iteration over a list: data[0], data[1] etc.
    print(poke["id"], poke["name"]["english"])

相关问题 更多 >