2016-06-19 12 views
-1

ich folgendes Problem bei der Arbeit haben - ich brauche angeordnet, um eine Protokolldatei mit Gegenständen zu nehmen, wie folgt:Konvertieren einer Log-Datei in eine CSV-Datei mit Python

A1 
B1 
C1 
A2 
B2 
C2 
. 
. 
. 
An 
Bn 
Cn 

ich wie so eine vollständige CSV-Datei benötigen:

A1,B1,C1 
A2,B2,C2 
A3,B3,C3 
... 
An,Bn,Cn 

Wie kann ich dies mit einem Python-Skript tun?

EDIT: Eigentlich ist das Format in der folgenden Art und Weise geschrieben -

Voltage: A1 
Current: B1 
Power: C1 

Wie kann ich wandeln es in -

Voltage, Current, Power 
A1,B1,C1 
+3

Was haben Sie versucht? Veröffentlichen Sie jeden Code, den Sie geschrieben haben. Vermutlich bezahlt Ihre Firma Sie, also sollten Sie Ihre Bemühungen zeigen, das Problem zu lösen. – mhawke

+0

Sagen Sie mehr über das Format der Protokolldatei. Wenn das Format genau so ist, wie Sie es geschrieben haben, müssen Sie nur den Wert von "n" aus der letzten Zeile der Datei finden und dann einfach die CSV-Datei erstellen: Sie müssen sich den Rest der Protokolldatei nicht ansehen. Oder gibt es etwas, das du nicht einbezogen hast? –

Antwort

1
import csv 

with open('myfile.log') as file: 
    lines = file.read().splitlines() 
    lines = [lines[x:x+3] for x in range(0, len(lines), 3)] 

    with open('yourcsv.csv', 'w+') as csvfile: 
     w = csv.writer(csvfile) 
     w.writerows(lines) 

Beachten Sie, dass die Punkte sind immer noch da, und sie würden als Werte behandelt werden (so werden sie durch getrennt werden durch Komma zu ist)

-1

Eine einfache Lösung mit numpy:

import numpy as np 

data = np.genfromtxt("d.csv", dtype=str) 
data = np.reshape(data, (3,-1)) 
np.savetxt('data.csv', data, delimiter=',', fmt="%s") 

Ergebnis:

A1,B1,C1 
A2,B2,C2 
An,Bn,Cn 

Wenn Sie nicht numpy verwenden, geben Sie bitte einen Code ein, den Sie ausprobiert haben.

+0

Downvoter: Fühlen Sie sich frei, warum zu kommentieren? :) –

Verwandte Themen