Page 1 of 1

Как заменить все четные запятые в строках на точки?

Posted: Wed Dec 30, 2015 10:18 am
by temp1111
Есть CSV-файлы, при формировании которых десятичным разделитем сдуру поставили запятую, а так как она же и разделитель полей, то файлы теперь экспортируются в эксель неправильно. Файлы - это ценные данные с приборов, и очень нужно их реанимировать, приведя формат к правильному.

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

Кто-нибудь из знатоков может срочно помочь?

Спасибо заранее и с наступающим!

Re: Как заменить все четные запятые в строках на точки?

Posted: Wed Dec 30, 2015 11:23 am
by YuS
temp1111 wrote: Для исправления достаточно заменить все четные запятые в каждой строке файла на точки, но я не умею писать скрипты, а регулярные выражения не катят, т.к. численные форматы полей разные.
Отчего же не катят? Вы просто не совсем правильно их "готовите" (в смысле, регэкспы) :)
Тут только требуется уточнение:
Не учитываются идущие подряд запятые, т.е. между ними должен присутствовать хотя бы один любой символ... если требуется учет таких запятых, то потребуется небольшое изменение регэкспов.
Вариант 1:

Code: Select all

Что: (,)([^,]++)(\1)
Чем: \1\2.
- четность запятых строгая, считается независимо от перевода строки

Вариант 2:

Code: Select all

Что: (,)([^,\n]++)(\1)
Чем: \1\2.
- четность запятых в каждой строке рассчитывается заново.

Posted: Wed Dec 30, 2015 12:08 pm
by temp1111
Спасибо большое, все прекрасно сошлось.

Подряд идущих запятых (т.е. пустых полей), к счастью, нету. Воспользовался вариантом 2, т.к. файлы большие (по несколько МБ). Обещаю изучить регэкспы :)

С наступающим!