1

我有一个 csv 文件,其中包含逗号。

% 带点

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

我怎么读它。

问候,

4

2 回答 2

1

不幸的是,textscan不尊重语言环境设置,因此无法通过修改当前语言环境将逗号解释为小数点。作为一种解决方法,您可以读入整行,用点替换逗号,然后用于textscan解析该行。

line = fgetl( fid );
line = strrep( line, ',', '.' );
Gdata = textscan( line, '%s %f' );

如果该行可能包含您不想替换的逗号,您可能不得不求助于regexp或其他比简单的更高级的方法。strrep

于 2012-12-11T17:43:43.163 回答
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
于 2012-12-11T18:05:39.933 回答