0

データを抽出するクローラーを構築していますが、データを取得したときにすべてを分類するのに苦労しています。私が使用することを期待していた dict キーは、探しているものを取得しないようです。「member_id」と「vote_position」を抽出したい。

以下の例は、「positions」キーを使用してプルしようとする試みを示しています。「positions」、「member_id」、「vote_position」を使用すると、すべて同じ KeyError が発生します。

さらに下に移動すると、 を使用したときの出力が表示されますprint data。それでも、出力後に表示されるキーを使用すると、 print dataKeyError が発生します。

私はかなり困惑しています。どんな助けでも大歓迎です。

import urllib2
import json
api_key = '72c9a68****************************'
url = 'http://api.time.com/svc/politics/v3/us/legislative/blue/113/
json_obj = urllib2.urlopen(url)
data = json.load(json_obj)

print data['positions']

Traceback (most recent call last):
  File "/Users/Owner/PycharmProjects/untitled2/1", line 8, in <module>
  print data [positions]
NameError: name 'positions' is not defined

JSON データ:

 "positions": [
          {
            "member_id": "A000055",
            "vote_position": "Yes",
            "dw_nominate": "0.466"
          },
                        {
            "member_id": "A000367",
            "vote_position": "Yes",
            "dw_nominate": "0.995"
          },

簡単なprint data結果:

{u'dw_nominate': u'-0.311', u'vote_position': u'Yes', u'member_id': u'B001242'},     {u'dw_nominate': u'0.793', u'vote_position': u'Yes', u'member_id': u'B001250'}, {u'dw_nominate': u'0.728', u'vote_position': u'Yes', u'member_id': u'B001273'}
4

2 に答える 2

0

これが " positions" 項目が存在しない、またはどこかでスペルが間違っているという単純なケースである場合、次のようなエラーが発生します。

KeyError: 'positions'

代わりに、表示されてNameErrorいるのは、という名前の変数positionsが定義されていないことを示しています。次の行があるため、Python は、文字列を使用するのではなく、その名前で変数を参照しようとしています。

print data [positions]

単語の周りに引用符がありません。

(少なくともあなたのトレースバックによると:)

Traceback (most recent call last):
  File "/Users/Owner/PycharmProjects/untitled2/1", line 8, in <module>
  print data [positions]
于 2014-12-29T04:27:44.233 に答える
0

あなたが与えたものから:

data = {u'dw_nominate': u'-0.311', u'vote_position': u'Yes', u'member_id': u'B001242'},     {u'dw_nominate': u'0.793', u'vote_position': u'Yes', u'member_id': u'B001250'}, {u'dw_nominate': u'0.728', u'vote_position': u'Yes', u'member_id': u'B001273'}

print type(data) # returns tuple

data[0]['vote_position'] # returns 'Yes'

すべてのキーを取得するには:

for i in xrange(len(data)): # python 2.x, for python 3, use range()
    print data[i].keys()
于 2014-12-29T04:23:44.943 に答える