2017-09-21 3 views
0

関数私は出力にJSONを使用しています。これは、テキストに存在するエンティティを表示するときに表示されます。実体出力は(例)のようになります。変数JSON出力にインデックスを付ける方法

... 
"entities": [ 
     { 
      "end": 3, 
      "entity": "pet", 
      "extractor": "ner_crf", 
      "processors": [ 
       "ner_synonyms" 
      ], 
      "start": 0, 
      "value": "Pet" 
     }, 
     { 
      "end": 8, 
      "entity": "aquatic_facility", 
      "extractor": "ner_crf", 
      "start": 4, 
      "value": "pool" 
     }, 
     { 
      "end": 14, 
      "entity": "toiletries", 
      "extractor": "ner_crf", 
      "start": 9, 
      "value": "razor" 
     } 
    ], 
... 

私はvalueオブジェクトでは特に興味があります。私は任意の値['entities'][i]['value']を抽出する方法を知っています。私が思っているのは、特定のキーと値のペアが存在するかどうかを確認する方法です。例えば、"value": "pool"です。私はテキストの入力に依存するので、彼らの位置が何であるか分からず、"entities"のテキストが存在しない場合でも、JSONに存在することはありません。

+0

'JSON'の構造を常にいいえ、あなたは一例として掲載するのと同じこと? – kip

+0

一般的な構造はありますが、エンティティの数とその順序は可変です – hackerman

+0

オブジェクトのリストをループし、データをフィルタするために何かをチェックすることができます –

答えて

1

あなたはリストの理解のようにそうすることができます。

pools = [x for x in jsondata['entities'] if x.get('value') == 'pool'] 
if pools: 
    print("pools found") 

Iのに.get使用している理由( '値')よりもむしろ[ '値が'] keynotfoundエラーが上昇されるのを防ぐことです。

0

jsonモジュールを使用すると、json文字列をpythonデータ型に変換できます。ここから辞書を繰り返して、「価値」の鍵を調べることができます。

import json 

json_str = """ 
[ 
     { 
      "end": 3, 
      "entity": "pet", 
      "extractor": "ner_crf", 
      "processors": [ 
       "ner_synonyms" 
      ], 
      "start": 0, 
      "value": "Pet" 
     }, 
     { 
      "end": 8, 
      "entity": "aquatic_facility", 
      "extractor": "ner_crf", 
      "start": 4, 
      "value": "pool" 
     }, 
     { 
      "end": 14, 
      "entity": "toiletries", 
      "extractor": "ner_crf", 
      "start": 9, 
      "value": "razor" 
     } 
    ] 
""" 

data = json.loads(json_str) 

values = [] 

for record in data: 
    if "value" in record: 
     values.append(record["value"]) 

print(values) 
0

はたぶんfilter()であなたが確認できます。

checkThis = ['foo', 'bar'] 
isThere = list(filter(lambda x: 'value' in x and x['value'] in checkThis, json['entities'])) 
if isThere: 
    print('Yes !') 
else: 
    print('No !') 
関連する問題