मैं एक जेसन प्रतिक्रिया को पार्स करने का प्रयास कर रहा हूं जो इस तरह दिखता है:
{
"links": {
"next": "http://www.neowsapp.com/rest/v1/feed?start_date=2015-09-08&end_date=2015-09-09&detailed=false&api_key=xxx",
"prev": "http://www.neowsapp.com/rest/v1/feed?start_date=2015-09-06&end_date=2015-09-07&detailed=false&api_key=xxx",
"self": "http://www.neowsapp.com/rest/v1/feed?start_date=2015-09-07&end_date=2015-09-08&detailed=false&api_key=xxx"
},
"element_count": 22,
"near_earth_objects": {
"2015-09-08": [
{
"links": {
"self": "http://www.neowsapp.com/rest/v1/neo/3726710?api_key=xxx"
},
"id": "3726710",
"neo_reference_id": "3726710",
"name": "(2015 RC)",
"nasa_jpl_url": "http://ssd.jpl.nasa.gov/sbdb.cgi?sstr=3726710",
"absolute_magnitude_h": 24.3,
"estimated_diameter": {
"kilometers": {
"estimated_diameter_min": 0.0366906138,
"estimated_diameter_max": 0.0820427065
},
"meters": {
"estimated_diameter_min": 36.6906137531,
"estimated_diameter_max": 82.0427064882
},
"miles": {
"estimated_diameter_min": 0.0227984834,
"estimated_diameter_max": 0.0509789586
},
"feet": {
"estimated_diameter_min": 120.3760332259,
"estimated_diameter_max": 269.1689931548
}
},
"is_potentially_hazardous_asteroid": false,
"close_approach_data": [
{
"close_approach_date": "2015-09-08",
"close_approach_date_full": "2015-Sep-08 09:45",
"epoch_date_close_approach": 1441705500000,
"relative_velocity": {
"kilometers_per_second": "19.4850295284",
"kilometers_per_hour": "70146.106302123",
"miles_per_hour": "43586.0625520053"
},
"miss_distance": {
"astronomical": "0.0269230459",
"lunar": "10.4730648551",
"kilometers": "4027630.320552233",
"miles": "2502653.4316094954"
},
"orbiting_body": "Earth"
}
],
"is_sentry_object": false
},
}
मैं यह पता लगाने की कोशिश कर रहा हूं कि "miss_distance" शब्दकोश मान प्राप्त करने के लिए कैसे पार्स किया जाए? मैं इसके चारों ओर अपना सिर लपेटने में असमर्थ हूं।
यहाँ मैं अब तक क्या कर पाया हूँ:
अनुरोध से प्रतिक्रिया वस्तु प्राप्त करने के बाद। प्राप्त करें () प्रतिक्रिया = अनुरोध। प्राप्त करें (url
मैं प्रतिक्रिया वस्तु को जेसन ऑब्जेक्ट में परिवर्तित करता हूं डेटा = response.json () # यह डिक्शनरी ऑब्जेक्ट देता है
मैं शब्दकोश के पहले स्तर को पार्स करने का प्रयास करता हूं: मैं डेटा में के लिए: अगर मैं == "नियर_अर्थ_ऑब्जेक्ट्स": डेटासेट 1 = डेटा ["नियर_अर्थ_ऑब्जेक्ट्स"] ["2015-09-08"] # यह अगली वस्तु लौटाता है जो कि प्रकार की सूची है
कृपया कोई मुझे समझा सकता है: 1. इस प्रतिक्रिया को पहली जगह में कैसे समझें। 2. मैं रिस्पांस ऑब्जेक्ट को पार्स करने में कैसे आगे बढ़ सकता हूं और मिस_डिस्टेंस डिक्शनरी तक पहुंच सकता हूं?
कृपया किसी भी संकेत/सहायता की सराहना की जाती है।
शुक्रिया
2 जवाब
आपके डेटा में प्रत्येक तिथि के लिए, पृथ्वी वस्तु के पास, और नज़दीकी दृष्टिकोण के लिए कई शब्दकोश होंगे:
near_earth_objects = data['near_earth_objects']
for date in near_earth_objects:
objects = near_earth_objects[date]
for object in objects:
close_approach_data = object['close_approach_data']
for close_approach in close_approach_data:
print(close_approach['miss_distance'])
नीचे दिया गया कोड आपको प्रत्येक तिथि के लिए प्रत्येक वस्तु के लिए date, miss_distances
की एक तालिका देता है
import json
raw_json = '''
{
"near_earth_objects": {
"2015-09-08": [
{
"close_approach_data": [
{
"miss_distance": {
"astronomical": "0.0269230459",
"lunar": "10.4730648551",
"kilometers": "4027630.320552233",
"miles": "2502653.4316094954"
},
"orbiting_body": "Earth"
}
]
}
]
}
}
'''
if __name__ == "__main__":
parsed = json.loads(raw_json)
# assuming this json includes more than one near_earch_object spread across dates
near_objects = []
for date, near_objs in parsed['near_earth_objects'].items():
for obj in near_objs:
for appr in obj['close_approach_data']:
o = {
'date': date,
'miss_distances': appr['miss_distance']
}
near_objects.append(o)
print(near_objects)
आउटपुट:
[
{'date': '2015-09-08',
'miss_distances': {
'astronomical': '0.0269230459',
'lunar': '10.4730648551',
'kilometers': '4027630.320552233',
'miles': '2502653.4316094954'
}
}
]
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।