Import data with column separated with a comma, and comma as decimal place symbol

3 ビュー (過去 30 日間)
Hello
I want to import a .csv data file with comma both for decimal place symbol and as system for divide the column, see below.
0,"0","0,9025","0","0,0341856"
0,05,"0","0,9","0","0,03409091"
0,1,"0,0003333325","0,9","0,001851847","0,03409091"
0,15,"0,001333333","0,9025","0,007407404","0,0341856"
How can I import the data? Matlab do not recognize the difference between the comma of the decimal place and the comma of the comulm deviders.
Regards

採用された回答

Alberto Mora
Alberto Mora 2019 年 6 月 7 日
編集済み: Alberto Mora 2021 年 2 月 10 日
I developed the following code, reading and modifying the comma and other symbol in the text.
fid = fopen([PathAndFileName,'.csv'],'r'); % Open file
C = textscan(fid, '%s'); % Read file
fclose(fid); % Close file
C=strrep(C{1,1},'","',' '); % Modify "," into a space
C=strrep(C,'"',''); % Delete remaining "
C=strrep(C,',','.'); % From comma to point decimal simbol
Data=zeros(numel(C),length(str2num(C{end,1}))); % Initialize matrix
for n = 1:numel(C)
Data(n,:) = str2num(C{n,1}); % Divide all rows into the columns
end
  2 件のコメント
Stephen23
Stephen23 2021 年 2 月 12 日
str = fileread('myfile.txt');
str = regexprep(str,{'(\d),(\d)','"?,?"'},{'$1.$2',' '});
mat = sscanf(str,'%f',[5,Inf]).' % more efficient than STR2NUM in a loop
mat = 4×5
0 0 0.9025 0 0.0342 0.0500 0 0.9000 0 0.0341 0.1000 0.0003 0.9000 0.0019 0.0341 0.1500 0.0013 0.9025 0.0074 0.0342
Alberto Mora
Alberto Mora 2021 年 2 月 12 日
Thank you for your suggestion Stephen! Your method is more efficent.

サインインしてコメントする。

その他の回答 (1 件)

Debasish Samal
Debasish Samal 2019 年 6 月 7 日
One thing that you can do here is import the data and save it in a variable say 'var'. Then replace the commas by a decimal point.
var =[ '0',"0","0,9025","0","0,0341856",...
'0','05',"0","0,9","0","0,03409091",...
'0','1',"0,0003333325","0,9","0,001851847","0,03409091",...
'0','15',"0,001333333","0,9025","0,007407404","0,0341856"];
for i = 1:numel(var)
res = [res cellfun(@(x)strrep(x,',','.'), var(i), 'Uni',0)];
end

カテゴリ

Help Center および File ExchangeWorkspace Variables and MAT-Files についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by