2017-11-20 6 views
1

APIから取得したPythonを使用してJSONファイル内の特定のタグを読み取ろうとしていますが、修正されても問題はありませんでした時々要素が跳びますが、私は "シーケンス"番号を追うことはできませんが、その名前を使ってその位置を特定する必要があります。名前は一貫していなければなりません。ここで 固定長グループ内の特定のjson要素を読み取る

は、私がこれまで見てきた二つのタイプがあるが、私はより多くのバリエーションがあるかもしれない確信しているので、代わりに

heroID =データ[回数]に頼るの[「選手」] [0] ['data'] [8] ['number']

値を抽出するには、私はむしろ "HeroID"の場所を探し、それを変数に読み込みます。

長い1

[ 
{'id': 'HeroBattleTag', 'string': 'TFYoDa#1456'}, 
{'id': 'GameAccount', 'number': 10519139}, 
{'id': 'HeroClass', 'string': 'monk'}, 
{'id': 'HeroGender', 'string': 'f'}, 
{'id': 'HeroLevel', 'number': 70}, 
{'id': 'ParagonLevel', 'number': 1212}, 
{'id': 'HeroClanTag', 'string': 'Sc'}, 
{'id': 'ClanName', 'string': 'Super CasuaI'}, 
{'id': 'HeroId', 'number': 95443875} 
] 

短い1

[ 
{'id': 'HeroBattleTag', 'string': 'Michael#1920'}, 
{'id': 'GameAccount', 'number': 96532923}, 
{'id': 'HeroClass', 'string': 'monk'}, 
{'id': 'HeroGender', 'string': 'f'}, 
{'id': 'HeroLevel', 'number': 70}, 
{'id': 'ParagonLevel', 'number': 1062}, 
{'id': 'HeroId', 'number': 95441675} 
] 
+0

したがって、あなたが望むものに 'id'がセットされたdictが見つかるまで、リストを反復処理します。あなたは何の問題を抱えていますか? – glibdud

+0

これは、別の配列内にネストされています。すでにヘッダーレベルで反復処理を行っている場合は、子レベルで反復処理できますか? – Amoner

+0

確かに、どうしてですか?コードがあり、それが期待どおりに機能しない場合は、それを表示して、何をしているのかを記述してください。 – glibdud

答えて

0

私は私の質問は最初から欠陥がされたと思うが、私は子供のJSONレコード上で反復を構築することにより、コードを書くことができました、しばらくすでに親のものを反復しています。

count = 0 
for i in data: 
    character = [] 
    rank = data[count]['order'] #ladderRank 
    accountId = data[count]['player'][0]['accountId'] #accountID 
    c = 0 
    for k in data[count]['player'][0]['data']: 
     if k['id'] == 'HeroId': 
      heroID = k['number'] 
      pprint.pprint(heroID) 
      break 
     else: 
      c = c + 1 
      if c > len(data[0]['player'][0]['data']): 
       break 
関連する問題