Игнорировать " символ при использовании textscan() в MATLAB
я использую textscan для чтения данных из файла. Считываемые данные:
"ABC",0.156
"DEF",0.125
"GHI",0.101
мой код - data = textscan(fid, '%s %f', 'Delimiter', ',');
данные{1} приходят как
'"ABC"'
'"DEF"'
'"GHI"'
мне нужны данные{1} Как -
'ABC'
'DEF'
'GHI'
наконец, как я могу получить ответ как
data =
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];
вместо использования данных{1} и данных{2}. Спасибо!
2 ответов
на самом деле есть два способа игнорировать "
символы при чтении ваших строк. Согласно TEXTSCAN документация, вы можете использовать вместо :
data = textscan(fid,'%q %f','Delimiter',',');
или вы можете прочитать строки с помощью и удалить "
персонажей data{1}
С помощью функции STRREP:
data{1} = strrep(data{1},'"','');
затем вы можете использовать функцию NUM2CELL для преобразования массив числовых значений в data{2}
в массив ячеек, чтобы вы могли объединения это с массивом ячеек строк в data{1}
:
>> data = [data{1} num2cell(data{2})];
data =
'ABC' [0.1560]
'DEF' [0.1250]
'GHI' [0.1010]
чтобы избавиться от двойных кавычек, используйте
data = textscan(fid, '%q %f', 'Delimiter', ',');
здесь %q
делает волшебство.