如何使用“csvread”当文件中的内容有不同的格式? [英] How to use "csvread" when the contents in the file have different formats?
问题描述
我有一个.csv文件,格式如下所示:
mapping.csv
5188.40811,TMobileML
5131.40903,TMobileGregsapt
5119.40791,TMobileJonsapartment
5123.40762,TMobileRedhat
我想把它存储在一个4乘2数组,当我有一个值,如 5131.40903
(这是一个字符串'not'int'),我想找到 TMobileGregsapt
的映射关系。但我遇到两个问题,第一是我不能使用 csvread('mapping.csv')
,它会有一些错误:
问题可能是 5131.40903
将会 int
当我使用csvread,但 TMobileGregsapt
是一个字符串...)
?使用==>时出错dlmread at 145
文件和格式字符串之间的不匹配。
从文件读取数字的问题(行1,字段2)==> TMobi
错误==> csvread at 52
m = dlmread(filename,',',r,c);即使我使用 dlmread('cell4.csv',','),还是
< ),它仍然有一些错误:
?使用==>时出错dlmread at 145
文件和格式字符串之间的不匹配。
从文件读取数字的问题(行1,字段2)==>第二个问题是如何以简单的方式找到映射关系,天真的方法是使用解决方案
csvread和dlmread只适用于数值数据。
out = textread('tmp.csv','%s','whitespace' ',');
nums = out(1:2:end);
strs = out(2:2:end);
%find'TMobileGregsapt'
ind = find(strcmp('TMobileGregsapt',strs));
nums(ind)
I have a .csv file and the format is shown below:
mapping.csv
5188.40811,TMobileML
5131.40903,TMobileGregsapt
5119.40791,TMobileJonsapartment
5123.40762,TMobileRedhat
i want to store it in an 4 by 2 array, when i have a value such as 5131.40903
(this is a 'string' not 'int'), i want to find the mapping relation which is TMobileGregsapt
. But i meet two problem, the first is i can't use csvread('mapping.csv')
, it will have some error:
(I think the problem might be 5131.40903
will be int
when i use csvread, but TMobileGregsapt
is a string...)
??? 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);
even though i use dlmread('cell4.csv', ',')
, it still have some error:
??? Error using ==> dlmread at 145
Mismatch between file and format string.
Trouble reading number from file (row 1, field 2) ==> TMobi
The second problem is how can i finding the mapping relation in easy way, the naive method is using a forloop to find the position of array.
Thanks for your help:)
解决方案 Both csvread and dlmread only work for numeric data. Something like this should work for you
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)
这篇关于如何使用“csvread”当文件中的内容有不同的格式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文