Отказ от ответственности: Я на самом деле не разбираю CSV, а CSV-подобный формат; Я не заинтересован в использовании встроенной библиотеки.Разбор CSV: краевые случаи
Что такое правильный способ разобрать следующие 2 строки ?:
a,b"c"d,e
a,"bc"d,e
т.е. (а) с кавычками в середине значения, и (б) с цитатой в начале, но без котировки сразу перед следующим значением.
Я не могу понять, как я должен обращаться с этими случаями (это было бы наиболее интуитивно понятным).
Мои мысли, что (а) должно быть разобрано как a
, b"c"d
, e
(котировки оставили в), и (б) должны быть разобраны таким же образом, a
, "bc"d
, e
. Но тогда позвольте мне представить 3-й случай, a,"b,c"d,e
- разделим ли мы на эту вторую запятую между «b» и «c» или нет?
В конечном счете это зависит от того, что именно вы позволяете между сепараторами - и как вы хотите для толкования. Там нет правильного пути, вы должны определить правила. – moodywoody
@moodywoody: Ну, как другие парсеры справляются с этими случаями? Как пользователь, если вы вводили список тегов, разделенных запятыми (аналогично тегам SO, но с разделителем запятой), какое поведение вы ожидали бы? – mpen
Мне лично, когда дело доходит до цитат и т. Д., Я ничего не жду - я прошу определения (я знаю, что это немного из-за копа, но мне нравятся мои проблемы «хорошо определены»). Во всяком случае, вы можете найти эти две ссылки, связанные с файлами perl и csv, интересными http://stackoverflow.com/questions/633607/how-can-i-parse-quote-csv-in-perl-with-a-regex. http://www.en8848.com.cn/Reilly%20Books/perl3/cookbook/ch01_16.htm. – moodywoody