2016-07-13 15 views
0

Ich habe eine CSV-Datei mit dem folgenden Format. Derzeit ist dies alles in einem StringReplizieren "Text zu Spalten" mit einem Skript

Column 1 
Frame 0 adm2_score:0.957 
Frame 1 dm2_score:0.942 
Frame 2 _adm2_score:0.935 
Frame 3 _adm2_score:0.940 
Frame 4 _adm2_score:0.927 
Frame 5 _adm2_score:0.925 

jedoch für meinen Anwendungsfall ich den Teil der Zeichenfolge an trennen wollen „:“ in einer separaten Spalte wie so

Column 1       Column 2 
Frame 0 _adm2_score: 0.957 
Frame 1 _adm2_score: 0.942 
Frame 2 _adm2_score: 0.935 
Frame 3 _adm2_score: 0.940 
Frame 4 _adm2_score: 0.927 
Frame 5 _adm2_score: 0.925 

Gibt es eine Möglichkeit, kann dies mit einem Skript (vorzugsweise Python-Skript) tun, anstatt es manuell zu tun. Jede Hilfe wird geschätzt. (Man beachte, ich weiß, Sie können dies in Excel manuell tun, aber ich möchte mit einem Skript zu tun, wie der Datensatz ist ziemlich groß.)

+1

Vorausgesetzt, Sie wollen Tab-Trennung, 'sed -i 's /: /: \ t /' Datei 'wird gut funktionieren. –

+0

Das könnte man mit VBA machen. Ein Trick, den ich mag, ist die Verwendung der Funktion "Makro aufzeichnen", benutze die eingebaute Funktion (Text zu Spalten in deinem Fall), dann sieh dir das vba-Skript an, das es erzeugt. Sie können in der Regel herausfinden, wie Sie es von dort bearbeiten, um alles zu tun, was Sie brauchen. – ericksonla

+0

Ich habe keine Erfahrung mit VBA können Sie einen Link zur Verfügung stellen, die ich beziehen kann, um zu beginnen, Danke –

Antwort

0

Sie die split() Funktion verwenden können, es zu teilen, wo Sie

for line in file: 
    list = line.split(":") ##turns into list at split at colon 
    print list[0], ": ", list[1] 
wollen

Oder etwas ähnliches zu bekommen, was Sie wollen

1

ersetzen Sie einfach: durch: \ t mit Python. Einfache Standalone-Demo:

z="""Frame 0 VMAF_feature_adm2_score:0.957 
Frame 1 VMAF_feature_adm2_score:0.942 
Frame 2 VMAF_feature_adm2_score:0.935 
Frame 3 VMAF_feature_adm2_score:0.940 
Frame 4 VMAF_feature_adm2_score:0.927 
Frame 5 VMAF_feature_adm2_score:0.925""".splitlines() 

for l in z: 
    print(l.replace(":",":\t")) 

Sie die Datei lesen und stellen Daten zu z mit

z = open("input.txt","rb").read().splitlines() 
0

Für jeden, der, wie zu diesem hier verwechselt wird, ist eine Methode, die ich mit einem Python-Skript gefunden

import csv, sys 
z = open("output.csv","rb").read().splitlines() 
for l in z: 
    print(l.replace(":",",")) 

Danach in Kommandozeile laufen gerade dieses

test.py > new.csv 
Verwandte Themen