Seite 1 von 1

Json Format mit Python zerlegen

Verfasst: Montag 2. Juni 2014, 10:25
von h0rnung
Servus zusammen,

ich versuche immer noch eine DatenBank mit Tweets zu einem bestimmten Thema zu befuellen. Das lokale Speichern und das Streamen von Tweets funktioniert schon recht gut. Da ich nicht den gesamten Tweet brauche splitte ich diesen aktuell mit folgendem Code auf:

Code: Alles auswählen

twittertext = data.split(',"text":"')[1].split('","source')[0]
Da es sich bei den gestreamten Tweets um das Json Format handelt gibt es aber wohl eine wesentlich bessere und flexiblere Art die Information auszulesen.

Hier dargestellt seht ihr den fuer mich relevanten Tweet Teil:

{"created_at":"[…]",
"id":[…],
"id_str":"[…]",
"text":"[…]",
"source":"[…]",
"truncated":[…],
"in_reply_to_status_id":[…],
"in_reply_to_status_id_str":[…],
"in_reply_to_user_id":[…],
"in_reply_to_user_id_str":[…],
"in_reply_to_screen_name":[…],
"user":{"id":[…],
"id_str":"[…]",
"name":"[…]”,
"screen_name":"[…]",
"location":"[…]",
.....}
.....}

Angenommen ich wollte "text" und "user"."name" auslesen - wie muesste ich meinen oben gezeigten Code veraendern?

Ps: Die Json-Lib ist bereits installiert und per

Code: Alles auswählen

import json
aufrufbar.

Tausend Dank!!

Re: Json Format mit Python zerlegen

Verfasst: Montag 2. Juni 2014, 10:32
von EyDu
Hallo,
h0rnung hat geschrieben:Angenommen ich wollte "text" und "user"."name" auslesen - wie muesste ich meinen oben gezeigten Code veraendern?
Ps: Die Json-Lib ist bereits installiert und per

Code: Alles auswählen

import json
aufrufbar.
Dann schau doch mal in die Dokumentation des json-Moduls hinein, dort ist das Vorgehen sehr gut beschrieben. Selber zerlegen musst du da gar nichts. Wenn du die Daten als String vorliegen hast, dann sollte die loads-Funktion für dich interessant sein.

Re: Json Format mit Python zerlegen

Verfasst: Montag 2. Juni 2014, 10:33
von Hyperion
JSON wird in Python mittels Dictionaries und Listen dargestellt. Du musst also nur via ``["key"]`` bzw. ``[index]`` auf diese Strukturen zugreifen. Eigentlich relativ einfach und Basiswissen :-)

Probiere das doch mal in einer Shell aus! ``json.loads`` ist Dein Freund, wenn Du nur das rohe JSON-Format hast.

Re: Json Format mit Python zerlegen

Verfasst: Montag 2. Juni 2014, 10:54
von h0rnung
heyho,

danke fuer die schnellen Antworten. Hab mir schon gedacht, dass das Basiswissen ist ... objektorientierte Porgrammierung ist nur leider ueberhaupt nicht meins :) ... eher xml und SQL. Sei's drum, ich hab es jetzt so probiert:

Code: Alles auswählen

jsonData = json.loads(data)
searchResults = jsonData['user']
for er in searchResults:
      created = er['created_at']
      text = er['text']
                print created
                print text
Da wirft er mir aber die Errormessage: IMPORTANT ERROR, string indices must be integers aus.

Wie vorgeschlagen schaue ich mir aber jetzt erstmal die Load-Funktion an.

Gruesse und Danke

Re: Json Format mit Python zerlegen

Verfasst: Montag 2. Juni 2014, 11:03
von Hyperion
h0rnung hat geschrieben: danke fuer die schnellen Antworten. Hab mir schon gedacht, dass das Basiswissen ist ... objektorientierte Porgrammierung ist nur leider ueberhaupt nicht meins :) ...
Was hat das mit OOP zu tun? Alles was man braucht ist ein Funktionsaufruf und zwei einfache Operatoren...
h0rnung hat geschrieben: Da wirft er mir aber die Errormessage: IMPORTANT ERROR, string indices must be integers aus.
Du bist augenscheinlich schon in einem String und greifst dann aber via Schlüssel darauf zu, anstatt mit einem Index - so schwer ist das doch nicht ;-)

Daher ja meine Empfehlung mit einer Shell - da kannst Du gucken, was ``jsonData['user']`` wirklich beinhaltet!

Re: Json Format mit Python zerlegen

Verfasst: Montag 2. Juni 2014, 11:32
von h0rnung
servus,

abermals Danke fuer deine Bemuehungen.
Du bist augenscheinlich schon in einem String und greifst dann aber via Schlüssel darauf zu, anstatt mit einem Index - so schwer ist das doch nicht
Schwer ist es vermutlich nicht ... aber bei mir ist der Funke nicht uebergesprungen. Vielleicht hakt es auch schon an der Formulierung: Was ist ein Schluesse und was ein Index beim Json Format?

Gruesse

Re: Json Format mit Python zerlegen

Verfasst: Montag 2. Juni 2014, 12:36
von Hyperion
h0rnung hat geschrieben: Schwer ist es vermutlich nicht ... aber bei mir ist der Funke nicht uebergesprungen. Vielleicht hakt es auch schon an der Formulierung: Was ist ein Schluesse und was ein Index beim Json Format?
Vergiss, dass die Daten aus JSON kommen! Schlüssel (=key) und Indizes sind Bestandteile vom Arbeiten mit den beiden grundlegenden Datenstrukturen Dictionary und Listen in Python. Beides sind absolute Grundlagen - arbeite einfach das offizielle Tutorial durch, da werden beide behandelt. Dazu brauchst Du noch das Arbeiten in einer Python-Shell. Auch das wird iirc gleich zu Beginn behandelt.

``json.load`` bzw. ``json.loads`` liefert Dir eben eine in Python Semantik überführte Darstellung der JSON-Daten. Und das sind als Basis eben Listen und Dictionaries. Ergo muss man sich mit diesen beiden Datentypen auskennen.