MATLAB / Octave-如何使用包含逗号的数字和字符串解析CSV文件

jot*_*cas 2 csv matlab octave textscan

我有一个包含20列的CSV文件。一些列具有数字值,其他列具有文本值,而文本列可能包含或可能不包含逗号。

CSV内容示例:

column1, column2, column3, column4
"text value 1", 123, "text, with a comma", 25
"another, comma", 456, "other text", 78
Run Code Online (Sandbox Code Playgroud)

我正在使用textscan函数,但是却遇到了最多的错误和奇怪的行为。使用一些参数,它只读取一列中的所有值,某些情况下,它会重复列,并且我尝试过的大多数操作都导致逗号被错误地解释为列分隔符(尽管文本用双引号引起来)。也就是说,我尝试指定'delimiter'参数,并且还包括格式规范中的文字,无济于事。

textscan如上例所示,调用处理CSV文件的正确方法是什么?我正在寻找一种既可以在MATLAB上又可以在Octave上运行的解决方案(或者,如果不可能的话,可以在每个解决方案中都使用等效的解决方案)。

And*_*ndy 5

对于GNU Octave,使用io包

pkg load io
c = csv2cell ("jota.csv")
Run Code Online (Sandbox Code Playgroud)

c = 
{
  [1,1] = column1
  [2,1] = text value 1
  [3,1] = another, comma
  [1,2] =  column2
  [2,2] =  123
  [3,2] =  456
  [1,3] =  column3
  [2,3] =  text, with a comma
  [3,3] =  other text
  [1,4] =  column4
  [2,4] =  25
  [3,4] =  78
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您应该明确提及该解决方案是否应在GNU Octave,Matlab或两者上运行