2017-01-08 9 views
6

現在、非常に長いJSONを取得しており、Python 2.7から2つの情報を選択しています。PythonでJSON内の文字列を検索

JSONはおおよそ次のようになります。

{ 
    'device': [ 
    { 
     'serial': '00000000762c1d3c', 
     'registered_id': '019' 
    }, 
    { 
     'serial': '000000003ad192f2', 
     'registered_id': '045' 
    }, 
    { 
     'serial': '000000004c9898aa', 
     'registered_id': '027' 
    } 
    ], 
} 

私はJSONの1と一致する可能性のある特定のシリアルを探しています。このJSON内。そうであれば、それはまた、registered_idを印刷しなければなりません。

私もregistered_idせずに、簡単なスクリプトを使用してみましたが、私はどこにもなってないよ。:あなたの提案を

if '00000000762c1d3c' not in data['device']: 
     print 'not there' 
else: 
     print 'there' 

感謝を!あなたがそのように扱い、それらを反復処理する必要がありますので、

+0

forループを作成してデバイスを反復処理します。 –

答えて

6

まず、あなたの入力をjsonではありません。 Jsonは二重引用符を使用します。しかし、あなたが正常にがロードされていると仮定します。 jsonと、それは今やdと呼ばれる辞書です。

次に、あなたはanyと発電機の理解を使用した際に停止し、すべてのdのサブdictsとあなたの価値に対するテストserialキーをスキャンすることができます:

print(any(sd['serial']=='00000000762c1d3c' for sd in d['device'])) 

リターンをTrueシリアルは、そうでない場合Falseを発見した場合。

0

多分これはあなたを助ける:

if [x for x in data['device'] if x.get('serial')=='00000000762c1d3c']: 
    print "IN" 
else: 
    print "NOT" 

Python: List Comprehensionsは数学者が行うことに使用されているように、非常に自然な、簡単な方法でリストを構築するために使用することができます。

関連する問題