如何在MATLAB中处理多个定界符

如何在MATLAB中处理多个定界符,matlab,Matlab,我目前正在尝试读取具有不同分隔符的.csv文件。目前,我使用的是readtable,但它只处理一种类型,而且textscan的使用实际上并不可行,因为该文件包含50多列 主要的两种类型的分隔符是';'和,'。我还使用了uigetfile,以便用户选择文件 所以我想知道如何处理不止一种类型的分隔符?分隔符在每个文件中都是一致的,它们都包含相同数量的列(因此我使用了readtable) 如有任何建议,将不胜感激 提前谢谢。我建议您统一分隔符。用逗号替换所有分号,反之亦然,就像这样 file = 'b

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

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

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

如有任何建议,将不胜感激


提前谢谢。

我建议您统一分隔符。用逗号替换所有分号,反之亦然,就像这样

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

如果您使用的是MATLAB版本R2016b或更高版本,则可以通过定义一组来为指定多个分隔符,如中所示。您将首先创建一个对象,将更改为字符的单元格数组,然后将这些选项传递给
readtable

opts = detectImportOptions('your_file.csv');
opts.Delimiter = {';', ','};
T = readtable('your_file.csv', opts);

您可以使用textscan为50多列编写自己的解释器?我可以将其用于多列输入,并且可以处理多个分隔符。不幸的是,我目前使用的是2015b,因此无法使用
detectImportOptions
:(。