2017-02-05 5 views
0

{JSON-1} {JSON-2}
{JSON-1} {JSON-2}
{JSON-1} {JSON-2}
parst mehrzeilige tab getrennt Json in Python

Json ist Multilinien und Tab getrennt auch wie oben. Nur JSON-2 ist nützlich. Wie analysiert man diesen json-Typ in Python?

+0

* Nur JSON-2 ist von Nutzen * - und was ist '{JSON-1}'? – RomanPerekhrest

+3

Das ist keine gültige JSON-Datei, daher müssen Sie sie manuell analysieren. Wenn sich in keinem der Objekte Registerkarten befinden, können Sie Zeilen aufteilen und jedes Teil separat analysieren. – jonrsharpe

Antwort

3

Beginnen Sie, indem Sie ignorieren, dass die Daten überhaupt JSON sind.

  • Öffnen Sie die Datei
  • Iterate jede Zeile in der Datei for line in f
  • Split die beiden Register getrennte Felder mit line.split('\t')
  • Dann den Bereich von Interesse in eine Python-Objekt konvertieren mit mit json.loads()

Beispiel:

import json 

with open('weird_file.txt', 'r') as f: 
    for line in f: 
     json1, json2 = line.split('\t') 
     j2 = json.loads(json2) 

     # Use j2 
+0

Ich mag deine Lösung. :-) –

+0

@AlexL Hey, deins auch. Ich habe dich um 8 Sekunden geschlagen :-) –

+0

Danke @JonathonReinhart! Dies veranschaulicht eines der Dinge, die über Python großartig ist: breiter Konsens über die besten/einfachsten/offensichtlichsten Möglichkeiten, Dinge zu tun. Ein riesiger Segen für Leute, die schreiben und vor allem lesen, Python. Es ist das Gegenteil des Perl-Mantras: "Es gibt mehr als einen Weg, es zu tun", was auch für Ruby gilt ... –

2

Sie müssen die Details ausfüllen und einige Anpassungen vornehmen, aber etwas wie das sollte den Trick tun. Der Schlüssel besteht darin, dass Sie jede Zeile auf der Registerkarte teilen und dann json.loads verwenden können, um nur den gewünschten Teil zu analysieren.

import json 

with open(filename, 'r') as fh: 
    for line in fh: 
     j1, j2 = line.split('\t') 
     decoded = json.loads(j2) 
Verwandte Themen