@skoch244

Как создать валидный CSV?

Разделителем в CSV может служить только один символ, а у меня в теории в тексте может содержаться любой символ, как создать CSV файл в таком случае?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
Adamos
@Adamos
В CSV есть два важных символа: разделитель полей (пробел, запятая, точка с запятой или табуляция) и обрамление текста (обычно кавычки).
Текст должен быть в кавычках, а если внутри самого текста случились кавычки - они экранируются (удваиваются).
Разделитель полей может сколько угодно встречаться внутри кавычек, там он остается просто текстом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
https://stackoverflow.com/questions/17808511/how-t...

читать rfc

RFC-4180, paragraph "If double-quotes are used to enclose fields, then a double-quote appearing inside a field must be escaped by preceding it with another double quote." –
tommed
Feb 18, 2015 at 16:35
5
As tommed says you only need to add a single double quote to escape a double quote. You can use a command-line tool called csvfix to detect any lines which don't conform: csvfix check -nl -v [filename] –
Sam Critchley
Jun 30, 2016 at 14:51
4
@SamCritchley I only see a single double quote being used to escape here. By "Use 2 quotes", user4035 means that 1 quote should be replaced with 2 quotes. By escaping double quotes with double quotes, you're effectively creating pairs of double quotes (2 double quotes). The final quote you see on the end is to terminate the field. –
Zenexer
Sep 9, 2016 at 3:11
Really nice approach. But this requires me to modify the CSV file before parsing. –
remy727
Sep 20, 2020 at 15:43
1
@GarfieldCat Try this: "world,"",hello" –
user4035
Dec 27, 2020 at 9:54
Ответ написан
Комментировать
GavriKos
@GavriKos
Использовать кавычки и экранирование.
А еще лучше - использовать готовые библиотеки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 11:02
5000 руб./за проект
25 апр. 2024, в 10:42
150000 руб./за проект
25 апр. 2024, в 10:41
2000 руб./за проект