2015-03-26 6 views
0

У меня есть объект json, сохраненный внутри test_data, и мне нужно знать, содержит ли строка внутри test_data['sign_in_info']['package_type'] строку "vacation_package". Я предположил, что in может помочь, но я не уверен, как правильно его использовать или если это правильно использовать. Это пример объекта JSON:Python parsing json data

"checkout_details": { 
     "file_name" : "pnc04", 
     "test_directory" : "test_pnc04_package_today3_signedout_noinsurance_cc", 
     "scope": "wdw", 
      "number_of_adults": "2", 
      "number_of_children": "0", 
      "sign_in_info": { 
       "should_login": false, 
       **"package_type": "vacation_package"** 
      }, 

package type имеет «vacation_package» в нем, но это не всегда так. Пока I'm только сохранить данные таким образом:

package_type = test_data['sign_in_info']['package_type'] 

Теперь это нормально, чтобы сделать что-то вроде:

p= "vacation_package" 
if(p in package_type): 
    .... 

Или я должен использовать «ре», чтобы вырезать строку и найти его таким образом?

+0

is 'test_data ['sign_in_info'] ['package_type'] == 'vacation_package'' не подходит? –

ответ

1

Вы ответ зависит от того, что именно вы хотите получить от test_data['sign_in_info']['package_type']. Будет ли 'vacation_package' всегда быть само собой? Тогда in в порядке. Может ли это быть частью более крупной струны? Затем вам нужно использовать re.search. Возможно, было бы безопаснее использовать re.search (и хорошая возможность практиковать регулярные выражения).

+0

Это мое беспокойство. «vacation_package» может всегда всегда быть один, иногда приходит что-то вроде «vacation_package_tickets». Таким образом, re было бы хорошим решением? – NachoMiguel

+0

Использование 're.search' определенно будет работать. Возможно, вы сможете использовать только '==', но это может произойти в случае чего-то вроде «vacation_package, vacation_package_tickets». –

0

Не нужно использовать re, при условии, что вы используете пакет json. Да, это нормально, но пытаетесь ли вы посмотреть, существует ли «тип пакета», или если тип пакета содержит vacation_package, возможно, между прочим? Если нет, то это может быть ближе к тому, что вы хотите, как он проверяет точные совпадения:

import json 
data = json.load(open('file.json')) 

if data['sign_in_info'].get('package_type') == "vacation_package": 
    pass # do something