如何在MATLAB中处理多个分隔符

时间:2017-06-19 07:51:37

标签: matlab

我目前正在尝试阅读可能有不同分隔符的.csv个文件。目前我正在使用readtable,但只处理一种类型,而textscan的使用并不可行,因为该文件包含50多列。

主要的两种分隔符是';'','。我也在使用uigetfile,以便用户选择文件。

所以我想知道如何处理多种类型的分隔符?分隔符在每个文件中都是一致的,它们都包含相同数量的列(因此我使用了readtable)。

任何建议都将不胜感激。

提前致谢。

2 个答案:

答案 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);