3

我有一个 .csv 文件,格式如下所示:

映射.csv

5188.40811,TMobileML
5131.40903,TMobileGregsapt
5119.40791,TMobileJonsapartment
5123.40762,TMobileRedhat

我想将它存储在一个 4 x 2 数组中,当我有一个值(例如,5131.40903这是一个“字符串”而不是“整数”)时,我想找到映射关系TMobileGregsapt。但是我遇到了两个问题,第一个是我不能使用csvread('mapping.csv'),它会有一些错误:(我认为问题可能5131.40903int当我使用 csvread 时,但TMobileGregsapt它是一个字符串......)

??? Error using ==> dlmread at 145
Mismatch between file and format string.
Trouble reading number from file (row 1, field 2) ==> TMobi

Error in ==> csvread at 52
    m=dlmread(filename, ',', r, c);

即使我使用dlmread('cell4.csv', ','),它仍然有一些错误:

??? Error using ==> dlmread at 145
Mismatch between file and format string.
Trouble reading number from file (row 1, field 2) ==> TMobi

第二个问题是如何以简单的方式找到映射关系,天真的方法是使用 forloop 来查找数组的位置。

谢谢你的帮助:)

4

2 回答 2

7

csvread 和 dlmread 都只适用于数字数据。像这样的东西应该适合你

out=textread('tmp.csv', '%s', 'whitespace',',');
nums =  out(1:2:end);
strs =  out(2:2:end);
% find index of 'TMobileGregsapt'
ind = find(strcmp('TMobileGregsapt',strs));
nums(ind)
于 2012-05-17T04:22:41.770 回答
2

如果您有混合文本/数字 csv 但您不知道格式是什么,或者它是异构的,另一个答案将起作用,请使用来自:http ://www.mathworks.com/matlabcentral/fileexchange 的“csv2cell”函数/20836-csv2cell

c = csv2cell( 'yourFile.csv', 'fromfile'); 

c(1, :)会给你的标题,c(2:end, k)会给你每一列(没有标题),for k = 1:size(c, 2)

于 2015-09-24T21:17:26.393 回答