Seite 1 von 1

Fehlende Keys überspringen

Verfasst: Donnerstag 26. November 2009, 12:52
von halo23
Hallo,
ich habe folgendes Konstrukt:

Code: Alles auswählen

[...]('uid=xyz', {'apple-generateduid': ['xyz'], 'loginShell': ['xyz'], 'uid': ['xyz'], 'cn': ['xyz']})
('uid=xyz', {'apple-generateduid': ['xyz'], 'loginShell': ['xyz'], 'telephoneNumber': ['157'], 'uid': ['xyz'], 'cn': ['xyz']})[...]
Ich habe also manchmal eine Telfonnummer und manchmal keine.

Code: Alles auswählen

for result in results:
        (a, b) = result
        name = b['cn'][0]
        uid = b['uid'][0]
        guid = b['apple-generateduid'][0]
        tel = b['telephoneNumber'][0]
        shell = b['loginShell'][0]
Mein Skript gibt mir folgende Fehlermeldung:

Code: Alles auswählen

[...]
tel = b['telephoneNumber'][0]
KeyError: 'telephoneNumber'
Wie "überrede" ich nun mein Skript dazu, nicht abzubrechen falls es keine telefonnummer gibt?!

Re: Fehlende Keys überspringen

Verfasst: Donnerstag 26. November 2009, 13:07
von /me
halo23 hat geschrieben:Wie "überrede" ich nun mein Skript dazu, nicht abzubrechen falls es keine telefonnummer gibt?!
Ich nehme mal an, dass du es in der Dokumentation überlesen hast. Schau einfach noch mal unter http://docs.python.org/tutorial/datastr ... ctionaries nach. Die Antwort steht da.

Verfasst: Donnerstag 26. November 2009, 13:32
von ms4py

Code: Alles auswählen

try:
    # Zugriff auf Tel.
except KeyError:
    pass
    # oder anderer Code, z.B. Warnung ausgeben
Edit: @/me Also an der Stelle habe ich nichts zu Fehlerbehandlung gefunden.
Wenn, dann hier:
http://docs.python.org/tutorial/errors.html

Verfasst: Donnerstag 26. November 2009, 13:37
von Hyperion
Oder eben alternativ:

Code: Alles auswählen

{}.get("foo", "bar")
wenn man denn irgend einen Wert haben möchte an der Stelle.

Verfasst: Donnerstag 26. November 2009, 14:06
von /me
ice2k3 hat geschrieben:@/me Also an der Stelle habe ich nichts zu Fehlerbehandlung gefunden.
Ich wollte erst mal auf das key in dict hinaus.

Verfasst: Donnerstag 26. November 2009, 15:04
von halo23
Danke, ich habe es nun mit ice2k3 art gemacht, unter http://docs.python.org/tutorial/datastr ... ctionaries habe ich keine Lösung finden können, bzw. habe es nicht verstanden.