Экранирование символа-разделителя в синтаксическом анализаторе csv univocity

У меня есть сценарий, в котором одна из строк данных имеет символ-разделитель в содержимом.

5 |0St"|"ring |field[1]

Всегда должен проходить - разделитель полей в кавычках

где символ-разделитель | и он также присутствует в одном из столбцов, как показано выше.

Моя конфигурация выглядит следующим образом:

quoteChar = "
quoteEscapeChar = \\

Но когда я пытаюсь проанализировать строку, она разбивает столбец на два отдельных столбца («0St» и «кольцо») и терпит неудачу.

Если поставить кавычки вокруг всех столбцов, как показано ниже, все работает нормально.

5 |"0St|ring" |field[1]

Всегда должен проходить - разделитель полей в кавычках

Есть ли какая-либо настройка для указания экранирующего символа разделителя?

Я использую однозначную версию 2.5.9.

Любая помощь приветствуется


person Sunil Kumar B M    schedule 19.06.2018    source источник
comment
Цитирование работает только для всего поля: 5 |"0St|ring"|field[1]; может быть, \\| работает.   -  person Joop Eggen    schedule 19.06.2018
comment
@JoopEggen: пробовал \\|, не получилось   -  person Sunil Kumar B M    schedule 20.06.2018


Ответы (1)


Автор библиотеки здесь. Кажется, я уже объяснил проблему в тикете, который вы открыли, но позвольте мне Попробуйте еще раз:

В основном формат CSV НЕ работает так.

Если у вас есть разделитель полей в вашем значении (т.е. у вас есть | между 0St и ring), все ваше значение ДОЛЖНО быть указано как "0St|ring" вместо 0St"|"ring.

Любой синтаксический анализатор CSV прочитает 0St"|"ring в 0St", а затем попытается обработать то, что после |, как другое значение. Вы ничего не можете сделать, кроме как написать все значение в кавычках.

ЕДИНСТВЕННЫЙ способ получить 0St"|"ring для анализа в одно значение (я предполагаю, что в результате вы хотите получить 0St|ring) — написать свой собственный код синтаксического анализа для обработки ваших данных таким образом.

Надеюсь это поможет.

person Jeronimo Backes    schedule 20.06.2018
comment
Спасибо @Jeronimo. Я опубликовал вопрос stackoverflow и проблему github вместе. Но я понял вариант использования, и мы признали недействительным вариант использования 0St|ring. - person Sunil Kumar B M; 21.06.2018