RESTful APIから受信しているJSONを解析しようとしていますが、空のプロパティ名があるように見えるためPythonでデータにアクセスできません。Pythonで空のJSONプロパティ/要素を解析する方法
JSONのサンプルが返さ:
{
"extractorData" : {
"url" : "RetreivedDataURL",
"resourceId" : "e38e1a7dd8f23dffbc77baf2d14ee500",
"data" : [ {
"group" : [ {
"CaseNumber" : [ {
"text" : "PO-1994-1350",
"href" : "http://www.referenceURL.net"
} ],
"DateFiled" : [ {
"text" : "03/11/1994"
} ],
"CaseDescription" : [ {
"text" : "Mary v. JONES"
} ],
"FoundParty" : [ {
"text" : "Lastname, MARY BETH (Plaintiff)"
} ]
}, {
"CaseNumber" : [ {
"text" : "NP-1998-2194",
"href" : "http://www.referenceURL.net"
}, {
"text" : "FD-1998-2310",
"href" : "http://www.referenceURL.net"
} ],
"DateFiled" : [ {
"text" : "08/13/1993"
}, {
"text" : "06/02/1998"
} ],
"CaseDescription" : [ {
"text" : "IN RE: NOTARY PUBLIC VS REDACTED"
}, {
"text" : "REDACTED"
} ],
"FoundParty" : [ {
"text" : "Lastname, MARY H (Plaintiff)"
}, {
"text" : "Lastname, MARY BETH (Defendant)"
} ]
} ]
} ]
そして、私は
import requests
import json
FirstName = raw_input("Please Enter First name: ")
LastName = raw_input("Please Enter Last Name: ")
with requests.Session() as c:
url = ('https://www.requestURL.net/?name={}&lastname={}').format(LastName, FirstName)
page = c.get(url)
data = page.content
theJSON = json.loads(data)
def myprint(d):
stack = d.items()
while stack:
k, v = stack.pop()
if isinstance(v, dict):
stack.extend(v.iteritems())
else:
print("%s: %s" % (k, v))
print myprint(theJSON["extractorData"]["data"]["group"])
を使用しようとしていますPythonのコードを、私はエラーを取得:
TypeError: list indices must be integers, not str
私はに新しいですPythonの解析と単純なPythonより一般的なので、私の無知を許します。しかし、それは空のプロパティであることを何私をリードし、私は視覚的にオンラインJSONを表示するツールを使用する場合、私はそうのように、空のブラケットを得ることをされたと信じてします
printscreen http://image.prntscr.com/image/6f8a8e4a1b8742d081bff024207d6426.png
テキストにこのデータを解析するすべてのヘルプ大きな助けになるだろう。
EDIT:
for d in group:
print group[0]['CaseNumber'][0]["text"]
しかし、今どのように私は、「CaseNumber」と表示されたすべてのノードをリストするグループのプロパティに記載されているすべての辞書を反復処理することができます。今、私はこのコードで特定のノードを参照することができていますなぜなら、それらのすべてに存在しなければならないからです。例えば
print group[0]['CaseNumber'][0]["text"]
その後、
for d in group:
print group[1]['CaseNumber'][0]["text"]
などなど。おそらく終わりに達するまで何らかの整数をインクリメントするでしょうか?私はあまりよく分からない。
これは少し役に立ちます。私は "グループ"の内容を習得することができました。私はそうでなければエラーを投げたので、2番目のコードブロックで "data"という単語の後ろに引用符を付けることを意味していたと思います。私はまだforループが何をしているのか混乱している。 "group"はPython辞書として返されますが(または少なくとも現れると思われますが)、個々のプロパティへのアクセスにはまだ問題があります。例: {u'CaseDescription ':[{{u'text':u'NAME '}] 私の理解は、テキストを参照するためのキー名になるはずですが、u'CaseDescription'というテキストが表示されます。作業。 –
@HunterBeach、 'data'は実際には辞書のリストです –
@HunterBeach私の言葉は少し不適切です、ヨルダンの編集はそれをもう少し明確にします。まだ混乱している場合は、あなたの目標を達成しようとしているコードで質問を更新できますか? –