Преобразование CSV с разделителями-запятыми в файл с разделителями-каналами с помощью Notepad ++ - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть CSV-файл, разделенный запятыми (,), в котором запятые экранируются, заключая данные в кавычки (").

ID,Email,Job Title
1001,wdaelman@example.com,Technician
1002,rfewell@example.com,"Specialist, HRIT"
1003,jcoulbeck@example.com,"Director, Nursing"

Я хочу преобразовать свой CSV в файл с разделителем каналов (|), используя Notepad ++, чтобы найти и заменить любые запятые, которые не заключены в двойные кавычки ("), на канал.

ID|Email|Job Title
1001|wdaelman@example.com|Technician
1002|rfewell@example.com|"Specialist, HRIT"
1003|jcoulbeck@example.com|"Director, Nursing"

Мой первый подход состоял в том, чтобы использовать регулярное выражение, чтобы соответствовало любым запятым без кавычек . Однако поиск ("[^"]*")|, в Notepad ++ заменяет запятые без кавычек и любые строки в кавычках, содержащие запятую.

1002|rfewell@example.com||

Как преобразовать файл CSV с разделителями-запятыми (,) в файл с разделителями-каналами (|) с помощью Notepad ++?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы можете попробовать это:

  1. Перенос данных, который имеет | символ. Сначала замените: ,([^"\n,]*\|[^"\n,]*) на ,"\1"
  2. Использовать | в качестве разделителя: Заменить: ,("[^"\n]*"|[^,\n]*) на |\1

ПРИМЕЧАНИЕ. Я полностью игнорирую первый столбец, поскольку это, похоже, идентификатор, который не требует дополнительной обработки

0 голосов
/ 17 сентября 2018

Вы можете использовать свое регулярное выражение, ("[^"]*")|,, но его необходимо заменить на (?1$1:|).

Шаблон соответствует и захватывает в Группу 1 a ", затем любые 0+ символов, кроме ", а затем снова "("[^"]*")) или (|) просто соответствует запятой (то есть запятой вне подстрок двойных кавычек, поскольку те, которые уже были сопоставлены с предыдущей ветвью).

Шаблон замены (?1$1:|) означает, что, как только Группа 1 соответствует ((?1), значение Группы 1 должно быть возвращено туда, где оно было (см. Заполнитель $1), иначе (:) заменитьсовпадающая строка (то есть запятая) с символом трубы.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...