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

Python 将json文件中的数据提取到csv中,python,json,python-3.x,list,Python,Json,Python 3.x,List,我是处理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

我是处理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()
申报

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

As str()

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

我不知道您希望它如何工作,因为您的json文件既没有
\u embedded
也没有
id\u poke
作为键,但为了让您开始,这里介绍了如何打印每个对象的数字id和英文名称;您可以从这里开始

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

JSON不是基于行的。您需要包含足够的JSON来实际重现问题。谢谢我理解这一点,我只是不想包含整个文件。我从JSON文件中包含了更多的信息。谢谢您的编辑乍一看,JSON似乎足以调试您的代码,但可能还不完全。哪里是
\e在您的JSON中添加了
id\u poke
?这里的问题很可能是
data['''u embedded']
是一个列表,但您将其视为一个dict。