Понимание форматирования CSV: почему общие инструменты отличаются от стандартов RFC 4180? ⇐ C#
-
Гость
Понимание форматирования CSV: почему общие инструменты отличаются от стандартов RFC 4180?
Я пытаюсь проанализировать множество файлов CSV (разделенных запятыми, в кодировке UTF-8) и столкнулся с повторяющейся проблемой.
Рассмотрим сценарий, в котором у меня есть три поля со значениями: A, «B», C. Согласно RFC 4180
Если для заключения полей используются двойные кавычки, то двойную кавычку, появляющуюся внутри поля, необходимо экранировать, поставив перед ней другую двойную кавычку
Исходя из этого, я понимаю, что правильное представление CSV должно быть A,"""B""",C . Однако многие файлы, созданные различными инструментами, форматируются как: : < code>"А, "Б"", С"
Это приводит к тому, что анализаторы CSV (например, CsvHelper в C#) интерпретируют такие строки как одно поле, а не как три отдельных поля.
Я что-то упустил? Почему этот, казалось бы, «неправильный» формат так часто используется в различных инструментах?
Для обсуждения вот более реалистичный пример:
"00AA12345,30.11.2023,30.11.2023,01.12.2023,01.12.2023,""BAS"",1 111 000.27,""НЗТ""," "Тест, ок"","""","""","""","""","""""
Мне нужно прочитать
[*]поле 0: идентификатор [*]поля с 1 по 4: дата [*]поле 5: дата [*]поле 6: строка [*]поле 7 и +: строка (может содержать двойные кавычки)
Я пытаюсь проанализировать множество файлов CSV (разделенных запятыми, в кодировке UTF-8) и столкнулся с повторяющейся проблемой.
Рассмотрим сценарий, в котором у меня есть три поля со значениями: A, «B», C. Согласно RFC 4180
Если для заключения полей используются двойные кавычки, то двойную кавычку, появляющуюся внутри поля, необходимо экранировать, поставив перед ней другую двойную кавычку
Исходя из этого, я понимаю, что правильное представление CSV должно быть A,"""B""",C . Однако многие файлы, созданные различными инструментами, форматируются как: : < code>"А, "Б"", С"
Это приводит к тому, что анализаторы CSV (например, CsvHelper в C#) интерпретируют такие строки как одно поле, а не как три отдельных поля.
Я что-то упустил? Почему этот, казалось бы, «неправильный» формат так часто используется в различных инструментах?
Для обсуждения вот более реалистичный пример:
"00AA12345,30.11.2023,30.11.2023,01.12.2023,01.12.2023,""BAS"",1 111 000.27,""НЗТ""," "Тест, ок"","""","""","""","""","""""
Мне нужно прочитать
[*]поле 0: идентификатор [*]поля с 1 по 4: дата [*]поле 5: дата [*]поле 6: строка [*]поле 7 и +: строка (может содержать двойные кавычки)
Мобильная версия