2017-07-26 5 views
0

Ich habe eine JSON, die ich manipulieren musste und der Code sieht so aus. Ich musste die Daten aufgrund eines ungültigen Teils der Daten manipulieren, die ich beim Hochladen auf BigQuery nicht verwenden konnte.Wie füge ich eine Newline-Funktion zu JSON mit Python

import json 

with open('firetobq_peripheral.json', 'r') as in_file: 
    dicts = [] 
    for line in in_file.readlines() : 
     d = json.loads(line.strip()) 
     if d.get('Peripherals'): 
      del d['Peripherals'] 
     dicts += [d] 

with open('firetobq_peripheral5.json', 'w') as out_file: 
    out_file.write(json.dumps(dicts)) 
    out_file.write("\n") 

jedoch out_file.write("\n") macht nicht die JSON jeden Satz von Daten auf eine neue Zeile schreiben, wie es in den vorherigen JSONs habe ich gearbeitet haben. Weiß jemand, warum das passiert und wie man das umgehen kann? Danke für die Hilfe.

muss ich die Daten wie diese

{"AppName": "DataWorks", "foundedPeripheralCount": 1, "version": "1.6.1(8056)", "deviceType": "iPhone 6", "createdAt": "2017-04-05T07:05:30.408Z", "updatedAt": "2017-04-05T07:08:49.569Z", "connectedPeripheralCount": 1, "iOSVersion": "10.2.1"} 
{"objectId": "20H5Hg2INB", "foundedPeripheralCount": 0, "DeviceVendorID": "5B7F085E-B3B6-4270-97DC-F42903CDEAC1", "version": "1.3.5(5801)", "deviceType": "iPhone 6", "createdAt": "2015-11-10T06:16:45.459Z", "updatedAt": "2015-11-10T06:16:45.459Z", "connectedPeripheralCount": 0, "iOSVersion": "9.1"} 
{"AppName": "DataWorks", "foundedPeripheralCount": 2, "version": "1.6.2(8069)", "deviceType": "iPhone 6s", "createdAt": "2017-04-12T10:05:05.937Z", "updatedAt": "2017-07-06T07:33:02.006Z", "connectedPeripheralCount": 8, "iOSVersion": "10.2.1"} 
+0

Ich denke, Sie sollten das tun out_file.write ("\\ n") ' – Sankar

+0

Können Sie bitte ein [mcve] mit einigen Ihrer Daten bereitstellen? –

+0

Ich habe ein Beispiel hinzugefügt –

Antwort

1

präsentiert werden, wenn Sie genau Ihre Daten schreiben möchten, wie Sie es in gelesen haben, dann müssen Sie über jedes Wörterbuch in dicts iterieren:

with open('firetobq_peripheral5.json', 'w') as out_file: 
    for d in dicts: 
     out_file.write(json.dumps(d)) 
     out_file.write("\n") 

Wenn dies nicht erforderlich ist, dann wäre json.dump die beste Option.

Verwandte Themen