如何在Matlab中删除CSV文件中的数字周围的双引号

时间:2016-12-14 19:38:32

标签: matlab csv quotation-marks

我正在使用Matlab中的csvread语法m =csvread('reserve2.csv',7,3,[7,3,9,4])来读取CSV文件中的逗号分隔值。不幸的是,CSV文件中指定行和列中的数字列出了它们周围的双引号,我收到以下错误:

  

使用dlmread时出错(第143行)   文件和格式字符串不匹配。   无法从文件中读取“数字”字段(行号1,字段编号4)==> “0”, “568” \ n

     

csvread出错(第49行)       m = dlmread(filename,',',r,c,rng);

如何调用csvread使它即使在双引号中也可以读取值?或者我如何编写代码来摆脱CSV文件中的引号?

1 个答案:

答案 0 :(得分:0)

此文件中有多种阅读方式。

  1. MATLAB的TEXTSCAN函数可以解析文本并忽略用双引号(“”)括起来的分隔符。使用带有'%q'格式类型的TEXTSCAN函数来标识由双引号划分的字符串。例如:
  2. str ='a,A,“a,apple”'; out = textscan(str,'%s%s%q','delimiter',',') 此命令将生成一个包含'a','A'和'a,apple'的单元格数组'out。

    1. 如果您使用的是Windows平台并安装了Microsoft Excel,则可以使用以下XLSREAD语法将数据读入两个单元阵列:

      [num_data text_data] = xlsread(filename);

    2. 执行此命令后,数据将被复制到以不同方式处理数据的2个不同阵列:

      “num_data” - 仅包含数字数据;字符串和空字段将转换为NaN

      “text_data” - 包含以字符串形式读取的所有数据。两个双引号之间的文本将被解析为单个字符串

      1. 使用多个FREAD或FGETL命令创建自定义函数来解析文件。
      2. 有关这些功能的更多信息,请在MATLAB命令提示符下执行以下命令来参考文档:

        doc textscan doc xlsread doc fread doc fgetl