2016-06-14 3 views
1

У меня есть CSV с данными для импорта, символ разделителя - это запятая здесь; но когда строка или строка имеет два сообщения электронной почты, запятая разделяет их, чтобы импорт не удался в этой точке. Итак, я подумал, что нужно удалить запятые между двумя, когда они находятся на одной линии, но я не знаю, как это сделать. Если у вас есть альтернативный раствор, это тоже будет приветствовать! Спасибо.Заменить запятые между at at на блокноте ++

Пример:

ENTERPRISE1 S.L.,,ENTERPRISE1,999461678,,,,,,[email protected], [email protected],Spain,,, 
ENTERPRISE2 S.A.,,ENTERPRISE2.,999859177,,,,,,[email protected],Italy,,, 
+0

Я не использовал блокнот ++, поэтому я не могу написать макрос для него (если это возможно). Но простой псевдокод будет выглядеть следующим образом: 1- получить, сколько @ в текущей строке, 2- если существует более одного @, получить запятую и @ позиции, 3- первая позиция @ позиция запятой между двумя смежными emails> last @ position – Lati

+0

Если возможно, будет лучше изменить способ создания файла. Измените запятую, которая ограничивает почту другим символом. – Toto

ответ

0

Учитывая ваши данные не использует вытекание и @ -char будет присутствовать только в почтовом столбце, вы можете использовать ((?:@|\G(?!^))[^,]+),([^,@][email protected]) в качестве шаблона поиска и $1$2 для замены. Это также обработает более двух писем в столбце правильно. конечно, вы можете поместить сепаратор выбора между $1 и $2, как $1;$2

Вы можете увидеть его в действии here.

+0

@Destrif Я действительно не вижу ошибки - что именно вы имеете в виду? –

+0

@ Destrif да, но результат правильный. –

+0

Хорошо, извините, хорошо работает :) – Destrif

-1

Похоже, в вашем примере у вас всегда есть пустое пространство после запятой, разделяющей несколько адресов электронной почты.
Если это общее правило, вы должны заменить строку «,» (запятая + пустое пространство) другим разделителем, например точкой с запятой, используя ctrl + h для вызова функции replace.

+0

@BrianTompsett Привет, почему вы отказали мне в ответе? –

+0

Я этого не делал. Я только что отредактировал в обзоре. Все голоса анонимны, так что никто не может сказать, кто голосовал в каком направлении - даже модераторы не могут. –

+0

О, хорошо. Спасибо за редактирование тогда :) –

0

Вы можете сделать это с помощью блокнота:

поле поиска:

([^@][email protected][^,]+)\s*,\s*([^@][email protected][^,]+) 

Заменить поле:

\1|\2 

Проверить регулярное выражение Флажок

Так

[email protected], [email protected] 

будет:

[email protected]|[email protected] 

Это позволит вам сохранить вашу организацию колонки, и позволяют обрабатывать данные и избежать любых потерянных

0

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

([^,][email protected][^,]+,[^,][email protected][^,]+) 

Заменить:

"\1" 

(Regex адаптировано из destrif's answer).

Смежные вопросы