Для проверки файлов CSV в соответствии с RFC 4180 действует правило "Последнее поле в записи не должно сопровождаться запятой". неправильно?

RFC 4180 утверждает на странице 2, что:

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

Итак, согласно этому стандарту это было бы недействительным:

cat,dog,cow,

Однако теоретически он должен представлять собой линию "кот", "собака", "корова" и "". Поэтому, если добавление запятой создает новый "последний" элемент, правило никогда не ошибается. Фактически, соблюдайте принцип "Каждая строка должна содержать одинаковое количество полей во всем файле". нам это понадобится в этом случае:

aaa,bbb,ccc,ddd
cat,dog,cow,

И действительно, некоторые программы, экспортирующие CSV, делают это для заполнения (например, Google Sheets).

В заключение, единственный правильный способ соблюдать стандарт?

aaa,bbb,ccc,ddd
cat,dog,cow,""

Или это правило неверно или излишне? Я неправильно это понимаю?

1 ответ

Решение

Правило вовсе не ошибочно, но его нужно читать очень дословно: за последним полем нельзя ставить запятую.

Если последний элемент пуст, это предпоследний элемент, за которым следует запятая, что совершенно нормально.

Так что это нормально

a,b,c,d
x,y,z,
u,v,,
w,,,

но это неправильно

a,b,c,d
x,y,z,
d,e,f,g,

ИЗМЕНИТЬ из обсуждения

a,b,c,d,
e,f,g,h,
i,j,k,l,
m,n,o,p,

также запрещено, согласно рассматриваемому правилу

Другие вопросы по тегам