Ignora "carattere quando si utilizza textSCAN () in MATLAB
Domanda
Sto usando textSCAN per leggere i dati da un file. L'essere di lettura dei dati è:
"ABC",0.156
"DEF",0.125
"GHI",0.101
Il mio codice è - data = textscan(fid, '%s %f', 'Delimiter', ',');
Dati {1} vengono come
'"ABC"'
'"DEF"'
'"GHI"'
Voglio i dati {1} come -
'ABC'
'DEF'
'GHI'
Infine, come posso avere la risposta, come
data =
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];
invece di utilizzare i dati {1} e {2} dati. Grazie!
Soluzione
In realtà ci sono due modi per ignorare i caratteri "
durante la lettura tue corde. Come per la documentazione textSCAN , è possibile utilizzare il formato %q
al posto del formato %s
:
data = textscan(fid,'%q %f','Delimiter',',');
In alternativa, è possibile leggere le stringhe utilizzando il formato %s
e rimuovere i caratteri "
dal data{1}
utilizzando la funzione di STRREP :
data{1} = strrep(data{1},'"','');
Quindi è possibile utilizzare la funzione NUM2CELL per convertire la matrice di valori numerici in data{2}
ad una matrice di celle in modo da poter concatenate con matrice di celle di stringhe in data{1}
:
>> data = [data{1} num2cell(data{2})];
data =
'ABC' [0.1560]
'DEF' [0.1250]
'GHI' [0.1010]
Altri suggerimenti
Al fine di sbarazzarsi dei virgolette usare
data = textscan(fid, '%q %f', 'Delimiter', ',');
dove %q
fa la magia.