2012-12-11 228 views
1

我有一個csv文件,內容中包含逗號。在csv文件,matlab的內容中讀取逗號

帶點%

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 

我怎麼能讀它做。

問候,

回答

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 
1

不幸的是,textscan不尊重區域設置,所以沒有辦法讓它通過修改當前區域解釋逗號作爲小數點。作爲一種解決方法,您可以讀取整行,用逗號替換逗號,然後使用textscan解析該行。

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

您可能必須訴諸regexp或別的東西,不是一個簡單的strrep票友如果該行可能包含你不想取代逗號。

相關問題