如何使用“csvread”当文件中的内容有不同的格式? [英] How to use "csvread" when the contents in the file have different formats?

查看:4035
本文介绍了如何使用“csvread”当文件中的内容有不同的格式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆