CSV-файл со значениями, имеющими одинарную кавычку в квалификаторе текста цитаты - PullRequest
0 голосов
/ 03 января 2019

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

'Fri, 24 Feb 2017 17:44:57 +0700','th01ham000tthxs','/','','Writer's Tools Data','7.1.0.0',

Я пытаюсь разобрать файл, так как после этой строки все оставшиеся строки смещаются.

Я пытался работать с OpenCSV, UnivocityParsers, но мне не повезло. Если я помещу вышеупомянутую строку в excel ( Excel Image ) и предоставлю квалификатор текста в виде одинарной кавычки, это даст правильный результат без смещения строк.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Попробуйте настроить анализаторы univocity для обработки неэкранированной кавычки в соответствии с вашим сценарием.'Writer's Tools Data' имеет неэкранированную цитату.Исходя из вашего ввода, я вижу, что вы хотите использовать STOP_AT_CLOSING_QUOTE в качестве стратегии для обхода этих значений.

Добавьте эту строку в ваш код, и она должна работать нормально:

parserSettings.setUnescapedQuoteHandling(UnescapedQuoteHandling.STOP_AT_CLOSING_QUOTE);

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

0 голосов
/ 04 января 2019

При использовании Java библиотека JRecord должна обрабатывать файл.

Как это работает: , если поле начинается с кавычки (например, ,') специально ищите ', или '' ', или ' '' '', или ' и т. Д. ( нечетное количество кавычек , за которым следует либо запятая или маркер конца строки ).Этот подход нарушается, если:

  • Введенная кавычка является последним символом в поле, т.е. 'Поле с кавычкой' ',
  • Пробел между кавычкамии запятая то есть 'Поле', или , '

Вот строка в ReCsvEditor

ReCsvEditor


Также в ReCsvEditor при редактировании файла, если вы выберете Создать >>> Java Code >>> ... , он сгенерируетКод Java / JRecord для чтения файла.

ReCsvEditor Generate

Отказ от ответственности: Я являюсь автором JRecord / ReCvEditor.Кроме того, функция генерации ReCsvEditor является новой и требует дополнительной работы

...