2017-01-27 2 views
0

Ich möchte Kommas innerhalb meiner Daten hinzufügen, aber nur für die erste Spalte.Hinzufügen einer Zeichenfolge innerhalb einer bestimmten Spalte in einer Textdatei

Daten Ich habe:

6.85675852  5.7928113, -99.990, -99.990, 8.083, 
6.81641565  5.5877682, 10.560, 8.960, 5.465, 
6.84986385  5.8423371, 7.390, 7.920, 6.026, 
6.86023411  5.7104751, 16.600, 13.800, 7.311, 

Daten Ich mag:

6.85675852,  5.7928113, -99.990, -99.990, 8.083, 
6.81641565,  5.5877682, 10.560, 8.960, 5.465, 
6.84986385,  5.8423371, 7.390, 7.920, 6.026, 
6.86023411,  5.7104751, 16.600, 13.800, 7.311, 

Ich habe versucht, mit split() und dem Hinzufügen des Kommas, aber ich weiß nicht, wie zu schreiben der Rest der Zeile, ohne das Format zu verpfuschen.

+0

Zeigen Sie den Code bitte. Vielen Dank. – Dilettant

Antwort

0

Ich würde empfehlen, die Ausgabe in eine neue Datei zu schreiben, anstatt zu versuchen, Ihre vorhandene Datei

with open('path/to/input') as infile, open('path/to/output', 'w') as outfile: 
    for line in infile: 
     head, tail = line.split('\t',1) 
     outfile.write("{},\t{}".format(head, tail)) 
+0

danke, es funktioniert! –

1

Mit re.sub zu überschreiben. Ich weiß nicht, ob Ihre Datei Tabulatoren oder Leerzeichen verwendet, also gehe ich beide Fälle auf der sicheren Seite an.

import re 

s =\ 
""" 
6.85675852  5.7928113, -99.990, -99.990, 8.083, 
6.81641565  5.5877682, 10.560, 8.960, 5.465, 
6.84986385  5.8423371, 7.390, 7.920, 6.026, 
6.86023411  5.7104751, 16.600, 13.800, 7.311, 
""" 

s_out = re.sub('(\t|\s{5})', r',\1', s) 
print(s_out) 

Ausgabe

6.85675852,  5.7928113, -99.990, -99.990, 8.083, 
6.81641565,  5.5877682, 10.560, 8.960, 5.465, 
6.84986385,  5.8423371, 7.390, 7.920, 6.026, 
6.86023411,  5.7104751, 16.600, 13.800, 7.311, 
+0

Danke! Ich kenne nur diese Funktion, ich lerne eine neue Sache. –

0

Sie die Eingabe in Zeilen aufgeteilt könnte und dann eine Regex Suche verwenden und auf jeder Zeile ersetzen:

>>> print(text) 
6.85675852  5.7928113, -99.990, -99.990, 8.083, 
6.81641565  5.5877682, 10.560, 8.960, 5.465, 
6.84986385  5.8423371, 7.390, 7.920, 6.026, 
6.86023411  5.7104751, 16.600, 13.800, 7.311, 
>>> lines = text.split('\n') 
>>> modified_lines = [re.sub(r'(^\d+\.\d+)',r'\1,',line) for line in lines] 
>>> print('\n'.join(modified_lines)) 
6.85675852,  5.7928113, -99.990, -99.990, 8.083, 
6.81641565,  5.5877682, 10.560, 8.960, 5.465, 
6.84986385,  5.8423371, 7.390, 7.920, 6.026, 
6.86023411,  5.7104751, 16.600, 13.800, 7.311, 
Verwandte Themen