我目前正在尝试阅读可能有不同分隔符的.csv
个文件。目前我正在使用readtable
,但只处理一种类型,而textscan
的使用并不可行,因为该文件包含50多列。
主要的两种分隔符是';'
和','
。我也在使用uigetfile
,以便用户选择文件。
所以我想知道如何处理多种类型的分隔符?分隔符在每个文件中都是一致的,它们都包含相同数量的列(因此我使用了readtable
)。
任何建议都将不胜感激。
提前致谢。
答案 0 :(得分:2)
我建议您统一分隔符。例如。用逗号替换所有分号,反之亦然,比如
file = 'bad_delimiters.csv';
fd = fopen(file);
text = fscanf(fd,'%c');
semicolons = strfind(text,';');
text(semicolons) = ',';
fd = fopen('good_delimiters.csv', 'w');
fwrite(fd, text);
答案 1 :(得分:1)
If you have MATLAB version R2016b or later you can specify multiple delimiters for readtable
by defining a set of import options, as illustrated in this example. You will first create a detectImportOptions
object, change the 'Delimiter'
property to a cell array of characters, then pass these options to readtable
:
opts = detectImportOptions('your_file.csv');
opts.Delimiter = {';', ','};
T = readtable('your_file.csv', opts);