2017-04-03 4 views
0

Ich schreibe Code für ein Projekt und speichern Sie diesen Code in .csv-Format. Es wird dann in Excel geöffnet, um die Daten weiter zu prüfen. Es gibt 8 Floats, dann 1 String in jeder Zeile. Wie bekomme ich Excel, um jeden Wert in verschiedenen Zellen anzuzeigen? Der Code zum SpeichernPython Formatierung einer CSV-Datei in Excel

def save_array(): 
    t = utctime.t() 
    temp = data.get_data() 
    atime = np.append([temp],[t]) 
    atime = ' '.join(atime) 
    return atime 

with open(path2, 'w') as save_data: 
    save_data_write = csv.writer(save_data, delimiter = ' ' , dialect = 'excel') 
    save_data_write.writerow([save_array()]) 
save_data.close() 

while i: 
    time.sleep(1) 
    with open(path2,'a') as save_data: 
    save_data_append = csv.writer(save_data, delimiter = ' ', dialect = 'excel') 
    save_data_append.writerow([save_array()]) 
save_data.close() 

Die gespeicherten Daten in Excel sieht so aus.

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:24:59 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:00 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:01 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:02 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:03 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:04 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:05 

Dieses sehr gut nicht kopieren, aber in Excel ist das alles in der ersten Zelle und überspringt es auch eine Linie zwischen den Reihen. Weiß jemand, wie man das korrekt formatiert?

Dank

+1

Sie können eine '.csv' Datei mit Excel gut ohne etwas Besonderes öffnen. Verwenden Sie als Trennzeichen zunächst ein Komma und nicht ein Leerzeichen. Ich verstehe jedoch nicht 'save_data_write.writerow ([save_array()])', speziell 'save_array()'. – roganjosh

+0

Wenn Sie in Windows csv-Dateien schreiben möchten, verwenden Sie 'wb' anstelle von' w'; Dadurch werden unerwünschte Zeilenumbrüche zwischen den Zeilen entfernt. – roganjosh

+0

save_array() ist ein Funktionsaufruf, der das Array zum Speichern ruft –

Antwort

1

Schnell Antwort (einfachste Weg):

import numpy 
#open the file in append, binary mode 
savefile=open('filename.csv','ab') 

#write to it the first time 
save_data = save_array() 
numpy.savetxt(savefile, save_data, fmt='%s', delimiter=',', newline='\n') 

#do your loop here 
time.sleep(1) 
save_data = save_array() 
numpy.savetxt(savefile, save_data, fmt='%s', delimiter=',', newline='\n') 

#once done 
savefile.close() 

Dies wird alles als Strings (wegen des% s Option) speichern, aber das sollte für Ihre Anwendung arbeiten. Da wir die Datei zum ersten Mal im "ab" -Modus (append, binary) geöffnet haben, wird sie nicht über die Datei geschrieben, sondern wird weiter unten hinzugefügt. Wenn Sie bei jedem Ausführen des Codes neu starten möchten, öffnen Sie stattdessen die Datei mit 'wb'.

sperrige Art und Weise (aber vielleicht eher traditionelle, und besser für bestimmte Anwendungen):

#open the file in append, binary mode 
savefile=open('filename.csv','ab') 
csvwriter = csv.writer(myFile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) 

save_data = save_array() 
for i in range(len(save_data)): 
    csvwriter.writerow(save_data[i]) 

#do your loop here 
time.sleep(1) 
save_data = save_array() 
for i in range(len(save_data)): 
    csvwriter.writerow(save_data[i]) 

#once done 
savefile.close() 

Hoffnung, die hilft, und stellen Sie sicher, dass dies als eine richtige Antwort zu markieren, wenn es Ihr Problem gelöst.

Weitere Details für die interessierten Leser:

CSV-Dateien sind ziemlich einfach, wenn Sie verstehen, wie sie gelesen werden.

Zuerst sollten Sie idealerweise Trennzeichen (Zeichen zum Trennen von Spalten) verwenden, die in keiner Ihrer Spalten enthalten sind. Da Ihre Zeichenfolgen Leerzeichen enthalten, sollten Sie kein Leerzeichentrennzeichen verwenden. Ein Komma ist eine allgemeine Wahl, aber Semikolons und Tabulatoren (Sie können diese mit \ t als Trennzeichen erhalten) sind andere häufige Wahlmöglichkeiten. Im Allgemeinen verwendet man Registerkarten mit einer TXT-Datei, während Kommas in CSV-Dateien verwendet werden.

Zweitens müssen Sie Excel sagen, was das Format ist. Excel erwartet, dass .csv-Dateien durch Kommata getrennt werden (verständlicherweise, da der Name wörtlich "durch Komma getrennte Werte" bedeutet). Für .txt-Dateien sollte ein Assistent geöffnet werden, mit dem Sie auswählen können, wie Sie die Daten einlesen.

+0

Danke hilft viel –

0
file_path = 'name.csv' 
with open(file_path, 'w', newline='') as result_file: 
    csv_writer = csv.writer(result_file, delimiter=',', quotechar='"', 
           quoting=csv.QUOTE_MINIMAL) 
    csv_writer.writerow([1, 2.2, '33'])