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 に答える