我有一个包含逗号的csv文件。
%with dot
15.12.2012 11:27; 0.9884753
11.12.2012 11:12; 10.670.642
11.12.2012 10:57; 114.455.145
Gdata= textscan(fid, '%s %f')
效果很好。
%但是如何处理点
15.12.2012 11:27; 0,9884753
11.12.2012 11:12; 10,670.642
11.12.2012 10:57; 114,455.145
我怎么读呢。
的问候,
答案 0 :(得分:1)
不幸的是,textscan
不尊重语言环境设置,因此无法通过修改当前语言环境将逗号解释为小数点。作为解决方法,您可以读取整行,用逗号替换逗号,然后使用textscan
来解析该行。
line = fgetl( fid );
line = strrep( line, ',', '.' );
Gdata = textscan( line, '%s %f' );
如果该行可能包含您不想替换的逗号,则可能不得不使用regexp
或其他比简单strrep
更漂亮的东西。
答案 1 :(得分:1)
由于存在','和'。'
,这可能会解决可能的不均匀现象fid = fopen('data.d','r');
Gdata= textscan(fid, '%s %s','delimiter', ';' )
% // cancels '.' and sets ',' as '.'
f = @(i) str2double(regexprep(regexprep(i,'\.',''),',','\.'));
Num = cellfun(f,Gdata(2),'UniformOutput' , false);
Num{:}
ans =
0.9885
10.6706
114.4551