2017-01-27 6 views
0

Я хочу добавить запятые в свои данные ниже, но только для первого столбца.Добавление некоторой строки в определенном столбце в текстовом файле

данных у меня есть:

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, 

данных Я хочу:

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, 

Я попытался с помощью split() и добавить запятую, но я не знаю, как писать остальная часть линии, не испортив формат.

+0

Показать код пожалуйста. Благодарю. – Dilettant

ответ

0

Я бы рекомендовал писать вывод в новый файл, вместо того, чтобы пытаться переписать существующий файл

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

спасибо, это работает! –

1

Использование re.sub. Я не знаю, использует ли ваш файл вкладки или пробелы, поэтому я обрабатываю оба случая, чтобы быть в безопасности.

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) 

Выход

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

Спасибо! Я просто знаю эту функцию, я узнаю новую вещь. –

0

Вы можете разделить вход в линии, а затем использовать поиск регулярных выражений и заменить на каждой строке:

>>> 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, 
Смежные вопросы