2017-06-22 1 views
0

Antwort vom curl-Befehl gibt die Daten als einzelne Zeile zurück (siehe unten). Ich möchte die Zeile nach Spaltennamen unten auf den Wert setzen.So teilen Sie die in einer einzelnen Zeile angezeigten Stiche

Derzeit zeigt es die Ausgabe als

[ { 
    "file" : "XXXX", 
    "key" : "XYZ123456789", 
    "previousSource" : "2017-05-23", 
    "previousValue" : -1, 
    "currentSource" : "2017-05-24", 
    "currentValue" : -1 
}] 

ich die Ausgabe in das unten stehende Format (psv Format)

file|key|previousSource|previousValue|currentSource|currentValue| 
XXXX|XYZ123456789|2017-05-23| -1|2017-05-24|-1 

Bitte lassen Sie mich das Konzept kennen speichern möchten in dieses Format zu konvertieren.

+2

Sind Sie fragen, wie diese Keywords mit verfügbaren Roboter zu tun, oder wie ein erstellen Stichwort in Python, dies zu tun? Hast du irgendwelche Nachforschungen angestellt, um das selbst zu versuchen? –

Antwort

0

Der beste Weg ist die Verwendung von Python integrierte CSV-Bibliothek. Erstellen Sie eine Helper.py-Datei, und fügen Sie diesen Code dort hinzu.

import csv 
def write_in_csv(filename, data, source='dict', write_mode='a'): 
    len = get_csv_length(filename) 
    with open(filename, write_mode) as csvfile: 
     if source == 'list': 
      writer = csv.writer(csvfile) 
     else: 
      writer = csv.DictWriter(csvfile, fieldnames=data.keys()) 
     if len == 0 and source == 'dict': 
      writer.writeheader() 
     writer.writerow(data) 

Jetzt in Ihrem Roboter-Datei:

$ vorausgesetzt {Reaktion} hat Ihre curl Antwort:

${response}= Remove String ${response} { [ } ] ${SPACE} " 
${response_list} Split String ${response} : 
${response_list_length} Get Length ${response_list} 
${count} Set Variable ${0} 
${response_dict} Create Dictionary 
:FOR ${index} IN RANGE ${response_list_length}/2 
\ Set to dictionary ${response_dict} ${response_list[${count}]}=${response_list[${count+1}]} 
\ ${count} Evaluate ${count} + 2 
write in csv ${csv_file_path} ${response_dict} 
Verwandte Themen