2016-06-27 5 views
1

Hallo Ich habe bereits Code arbeitet für *.txt mit einem solchen Muster-Analyse:Parse-txt-Datei 2 csv-Dateien

... 
0.00001 
0.00280 
0.00022 
... 

in *.csv Datei

Ich mache es mit diesem:

in_txt = csv.reader(open(txt_file, "rb"), delimiter = '\n') 
f = open(csv_file, 'wb') 
out_csv = csv.writer(f) 
out_csv.writerows(in_txt) 
f.close() 

Ich brauche Hilfe beim Modifizieren, um das folgende Muster analysieren zu können:

... 
[email protected] 
[email protected] 
[email protected] 
... 

in 2 * .csv-Dateien (zuerst mit dem ersten "Säule", die zweite mit der zweiten "Säule")

+1

Sie erkennen, dass der Code, den Sie haben, ändert absolut nichts in der Datei richtig? –

+0

Jetzt mache ich, danke – tomtom

Antwort

1

Ein Beispiel getestet:

import csv, os 

txt_file = '/path/to/in.txt' 
in_txt = csv.reader(open(txt_file, 'rb'), delimiter='@') 
out_file1 = '/path/to/out1.txt' 
out_file2 = '/path/to/out2.txt' 
with open(out_file1, 'wb') as fou1, open(out_file2, 'wb') as fou2: 
    for one, two in in_txt: 
     fou1.write(one + os.linesep) 
     fou2.write(two + os.linesep) 
+0

Danke für die Bearbeitung. – bernie

1

hier ist ein pandas Ansatz, der funktioniert für eine beliebige Anzahl von Spalten (nur für den Fall ...):

import pandas as pd 

in_fn = '/path/to/in.csv' 
out_fn_pattern = '/path/to/out_{}.csv' 

# parse CSV to DataFrame 
df = pd.read_csv(in_fn, sep='@', header=None) 
# save each column in a separate CSV file 
df.apply(lambda x: x.to_csv(out_fn_pattern.format(x.name), header=None, index=False)) 

oder als Einzeiler (wenn Sie nicht brauchen, um Ihre Daten zu verarbeiten):

(pd.read_csv(in_fn, sep='@', header=None) 
    .apply(lambda x: x.to_csv(out_fn_pattern.format(x.name), 
          header=None, index=False)) 
)