Я нашел проблему синтаксического анализа CSV с FasterCSV (1.5.0), которая кажется подлинной ошибкой, но я надеюсь, что есть обходной путь.Преодоление основной проблемы с синтаксическим разбором CSV с использованием графа FasterCSV
В принципе, добавление пробела после разделителя (в моем случае запятая), когда поля заключены в кавычки, генерирует MalformedCSVError
.
Вот простой пример:
# No quotes on fields -- works fine
FasterCSV.parse_line("one,two,three")
=> ["one", "two", "three"]
# Quotes around fields with no spaces after separators -- works fine
FasterCSV.parse_line("\"one\",\"two\",\"three\"")
=> ["one", "two", "three"]
# Quotes around fields but with a space after the first separator -- fails!
FasterCSV.parse_line("\"one\", \"two\",\"three\"")
=> FasterCSV::MalformedCSVError: Illegal quoting on line 1.
Am Я схожу с ума, или это ошибка в FasterCSV?
Разве это не пространство, говорящее, что поле фактически не окружено кавычками (поскольку первый символ не является цитатой) и что кавычки должны быть взяты как часть содержимого поля? –
Похоже, я ошибаюсь. «Если поля не заключены в двойные кавычки, тогда двойные кавычки могут не отображаться внутри полей». - http://tools.ietf.org/html/rfc4180#section-2 –
Вы правы, я не понимал, что для CSV существует «спецификация», но кажется, что есть. FasterCSV действительно просто очень строгий. – Olly