تخطي حلقة تحليل JSON إذا كانت قيمة القاموس غير موجودة

0

أنا أستخدم OpenStreetMap API لاستخراج بعض البيانات حول منطقة معينة باستخدام الرمز أدناه:

import requests
import json

overpass_url = "http://overpass-api.de/api/interpreter"
overpass_query = """
[out:json];
area["ISO3166-1"="DE"][admin_level=2];
(node["amenity"="place_of_worship"](area);
 way["amenity"="place_of_worship"](area);
 rel["amenity"="place_of_worship"](area);
);
out center;
"""
response = requests.get(overpass_url, 
                        params={'data': overpass_query})
data = response.json()

ثم أحاول طباعة جميع "الأسماء" المذكورة أعلاه باستخدام الكود التالي:

for tags in data['elements']:
    print(tags['tags']['name'])

يعمل هذا بشكل جيد للنتائج الـ 12 الأولى أو نحو ذلك ، ولكنه يصطدم بمشكلة عندما تصادف نتيجة بدون قيمة "الاسم" في قاموس "العلامات":

Epiphanias Kirche
Kirche St. Bilhildis
Kleine Kreuzkirche
Marienkapelle
Kath. Kirche Heilige Familie
St. Cyriakus
Friedhofskapelle
Ev. Hoffnungsgemeinde / Philippuszentrum
Petrikirche
Sankt Paulus
Kapelle Höver
Pfarrkirche St. Laurentius

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-81-5758361aa6f2> in <module>()
      1 for tags in data['elements']:
----> 2     print(tags['tags']['name'])
      3 
      4 #error occurs because not all have name tags

KeyError: 'name'

هل هناك طريقة يمكنني من خلالها تخطي أي قيم "اسم" مفقودة والاستمرار في التحليل؟

1 إجابة

1
افضل جواب

جرب استخدام dict.get

مثال:

for tags in data['elements']:
    print(tags['tags'].get('name'))

يمكنك أيضًا تعيين قيمة افتراضية. مثال: print(tags['tags'].get('name', "EMPTY"))

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام