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

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 56
Joined: Tue Aug 26, 2008 9:56 am

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

Post by temp1111 »

Есть CSV-файлы, при формировании которых десятичным разделитем сдуру поставили запятую, а так как она же и разделитель полей, то файлы теперь экспортируются в эксель неправильно. Файлы - это ценные данные с приборов, и очень нужно их реанимировать, приведя формат к правильному.

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

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

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

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

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

Post by YuS »

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

Code: Select all

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

Вариант 2:

Code: Select all

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

Offline
Posts: 56
Joined: Tue Aug 26, 2008 9:56 am

Post by temp1111 »

Спасибо большое, все прекрасно сошлось.

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

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