2017-10-20 2 views
-1

Ich bin ein Anfänger in Python. Ich habe ein kleines Skript mit Python 2.7.11 gemacht, um Daten von einem Agilent Gerät zu bekommen, aber das Format ist nicht ideal. Bisher habe ich es geschafft, meine Daten zu formatieren, wie in einer txt-Datei wie folgt vor:Split-Spalte in TXT-Datei in Python

freq1

freq2

...

freq201

data1

Daten2

...

data201

und ich möchte sie zu formatieren, so folgen, so dass ich easisly die txt-Datei mit Excel öffnen:

freq1; data1

freq2; data2

...; ...

freq201; data201

Kennen Sie einen einfachen Weg, um das zu erreichen?

Vielen Dank im Voraus

CL

+0

Gibt es eine Eins-zu-eins-Zuordnung und es ist garantiert, dass es N Zeilen von Freq und dann N Zeilen von Daten gibt? Wenn ja, und Sie können die Datei in den Speicher laden - Sie können es dann in zwei Teile teilen und sie zusammen zippen –

+0

Ja, es wird 201 Linien von Frequenz und 201 Zeilen von Daten für 95% meiner Messungen geben. Wie kann ich die Datei in den Speicher laden, aufteilen und zurücksenden? Kann ich ein ";" Zeichen, um die Spalten zusammen zurückzuziehen? –

Antwort

0

Da Sie die gleiche Anzahl von Zeilen von Freq und Datenzeilen haben, sollte dieses Stück Code den Trick:

#imports OrderedDict to have an Ordered dictionary 
from collections import OrderedDict 

#opens files 
my_file = open('freq.txt','r') 
my_new_file = open("new.txt",'w') 

#saves lines of file as a list, with each line being one item in the list 
lines_list = my_file.readlines() 

#creates empty dictionary to fill with data 
freq_data = OrderedDict() 

#iterates through lines and adds to dictionary, with freq as key and data as value 
for line in range(len(lines_list)/2): 
    freq_data[lines_list[line]] = lines_list[line+10] 
    keys = freq_data.keys() 

#writes to your new file 
for i in keys: 
    my_new_file.write(i.strip() + ' ; ' + freq_data[i]) 

#closes both files 
my_file.close() 
my_new_file.close() 

Wesentliches, was diese code does öffnet die Datei, verbindet jede freq mit einem entsprechenden Datenwert und schreibt diesen in eine neue Datei. Sie können die Linie

freq_data[lines_list[line]] = lines_list[line+10] 

zu was auch immer Anzahl der Zeilen ändern Sie Ihre Daten durch zwei geteilt hat, so dass für Sie wäre es

freq_data[lines_list[line]] = lines_list[line+201] 

sein Dadurch wird die Textdatei, die wie folgt aussieht:

freq1 freq2 freq3 ... data1 Daten2 data3

... in

freq1; data1

freq2; data2

freq3; data3 ...

Hoffe, das hilft!

0

Danke, das ist genau das, was ich brauchte.