0

JSON ファイルからデータを抽出しようとしています。これが私のコードです。

import json
json_file = open('test.json')                                                                                                                          
data = json.load(json_file)
json_file.close()

この時点で、印刷データを使用してファイルを印刷でき、ファイルが正しく読み込まれたようです。

ここで、辞書内にネストされたリスト内にネストされた辞書にあるキーと値のペアから値を取得したいと思います (Phew!)。私の最初の戦略は、辞書を作成し、リスト内にネストされた辞書を展開してから、必要なキーと値のペアを抽出することでした。

dict = {}
dict = json_file.get('dataObjects', None)
dict[0]

dict の内容を見てみると、要素が 1 つしかないことがわかります。辞書全体がリストとして読み取られたようです。私はいくつかの異なるアプローチを試みましたが、それでもリストとして読み取られる辞書に行き着きます。ネストされた辞書を取得し、別の .get を使用して必要な値を取得したいと思います。これは、私が使用している JSON のサンプルです。具体的には、dataObjects セクションから識別子と説明の値を取得しようとしています。

{
  "identifier": 213726,
  "scientificName": "Carcharodon carcharias (Linnaeus, 1758)",
  "richness_score": 89.6095,
  "synonyms": [

  ],

  "taxonConcepts": [
    {
      "identifier": 20728481,
      "scientificName": "Carcharodon carcharias (Linnaeus, 1758)",
      "nameAccordingTo": "WORMS Species Information (Marine Species)",
      "canonicalForm": "Carcharodon carcharias",
      "sourceIdentfier": "105838"
    },
    {
      "identifier": 24922984,
      "scientificName": "Carcharodon carcharias",
      "nameAccordingTo": "IUCN Red List (Species Assessed for Global Conservation)",
      "canonicalForm": "Carcharodon carcharias",
      "sourceIdentfier": "IUCN-3855"
    },
  ],
  "dataObjects": [
    {
      "identifier": "5e1882d822ec530069d6d29e28944369",
      "dataObjectVersionID": 5671572,
      "dataType": "http://purl.org/dc/dcmitype/Text",
      "dataSubtype": "",
      "vettedStatus": "Trusted",
      "dataRating": 3.0,
      "subject": "http://rs.tdwg.org/ontology/voc/SPMInfoItems#TaxonBiology",
      "mimeType": "text/html",
      "title": "Biology",
      "language": "en",
      "license": "http://creativecommons.org/licenses/by-nc-sa/3.0/",
      "rights": "Copyright Wildscreen 2003-2008",
      "rightsHolder": "Wildscreen",
      "audience": [
        "General public"
      ],
      "source": "http://www.arkive.org/great-white-shark/carcharodon-carcharias/",
      "description": "Despite its worldwide notoriety, very little is known about the natural ecology and behaviour of this predator. These sharks are usually solitary or occur in pairs, although it is apparently a social animal that can also be found in small aggregations of 10 or more, particularly around a carcass (3) (6). Females are ovoviviparous; the pups hatch from eggs retained within their mother's body, and she then gives birth to live young (10). Great white sharks are particularly slow-growing, late maturing and long-lived, with a small litter size and low reproductive capacity (8). Females do not reproduce until they reach about 4.5 to 5 metres in length, and litter sizes range from two to ten pups (8). The length of gestation is not known but estimated at between 12 and 18 months, and it is likely that these sharks only reproduce every two or three years (8) (11). After birth, there is no maternal care, and despite their large size, survival of young is thought to be low (8). Great whites are at the top of the marine food chain, and these sharks are skilled predators. They feed predominately on fish but will also consume turtles, molluscs, and crustaceans, and are active hunters of small cetaceans such as dolphins and porpoises, and of other marine mammals such as seals and sea lions (12). Using their acute senses of smell, sound location and electroreception, weak and injured prey can be detected from a great distance (7). Efficient swimmers, sharks have a quick turn of speed and will attack rapidly before backing off whilst the prey becomes weakened; they are sometimes seen leaping clear of the water (6). Great whites, unlike most other fish, are able to maintain their body temperature higher than that of the surrounding water using a heat exchange system in their blood vessels (11).",
      "agents": [
        {
          "full_name": "ARKive",
          "homepage": "http://www.arkive.org/",
          "role": "provider"
        }
      ],
    }
  ]
}
4

1 に答える 1

0

あなたが提供するソースはjsonで読み取ることができません.そこには削除する必要がある2つのコンマがあります(下から4行目にあるコンマと、2行上にあるコンマですdataObjects.その後、jsonモジュールはエラーなしで解析されます:

import json

json_file = open('test.json')
data = json.load(json_file)
do = data['dataObjects'][0]
print do['identifier']
print do['description']
json_file.close()
于 2013-03-22T21:25:34.360 に答える