Это старый поток, но я столкнулся с этой проблемой, и я решил ее с помощью регулярного выражения, чтобы вы могли избежать библиотеки только для этого.Здесь код написан на PHP, но его можно адаптировать к другому языку.
$parsedCSV = preg_replace('/(,|\n|^)"(?:([^\n"]*)\n([^\n"]*))*"/', '$1"$2 $3"', $parsedCSV);
Это может быть неэффективно, если содержимое слишком велико, но может помочь во многих случаях иИдея может быть повторно использована, может быть оптимизирована, если сделать это для небольших кусков (но вам придется обрабатывать сокращения с помощью буферов фиксированного размера).Это решение предполагает, что поля, содержащие разрыв строки, заключены в двойные кавычки, что, по-видимому, является допустимым предположением, по крайней мере, для того, что я видел до сих пор.Кроме того, двойные кавычки должны следовать за ,
или помещаться в начале новой строки (или первой строки).
Пример:
field1,"field2-part1\nfield2-part2",field3
Здесь \ n заменяется пробелом, поэтому результатом будет:
field1,"field2-part1 field2-part2",field3
Регулярное выражение также должно обрабатывать несколько разрывов строк.