当文件中的内容有不同的格式时,如何使用"csvread"?

Lov*_*eTW 3 csv file-io matlab

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

mapping.csv

5188.40811,TMobileML
5131.40903,TMobileGregsapt
5119.40791,TMobileJonsapartment
5123.40762,TMobileRedhat
Run Code Online (Sandbox Code Playgroud)

我想将它存储在一个4乘2的数组中,当我有一个值(例如5131.40903'这是一个'字符串'而不是'int')时,我想找到映射关系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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢你的帮助:)

Mau*_*uro 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)
Run Code Online (Sandbox Code Playgroud)