Pregunta

Estoy usando TextScan para leer datos de un archivo. Los datos que se leen son:

"ABC",0.156
"DEF",0.125
"GHI",0.101

Mi código es - data = textscan(fid, '%s %f', 'Delimiter', ',');

Los datos {1} vienen como

'"ABC"'
'"DEF"'
'"GHI"'

Quiero los datos {1} como -

'ABC'
'DEF'
'GHI'

Finalmente, ¿cómo puedo tener la respuesta como

data = 
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];

en lugar de usar datos {1} y datos {2}. ¡Gracias!

¿Fue útil?

Solución

En realidad, hay dos formas de ignorar el " personajes al leer tus cuerdas. Según el Paquillo de texto documentación, puede usar el %q formato en lugar del %s formato:

data = textscan(fid,'%q %f','Delimiter',',');

O puedes leer las cadenas usando el %s formatear y eliminar el " personajes de data{1} Usando la función Strrep:

data{1} = strrep(data{1},'"','');

Entonces puedes usar la función Num2 célula para convertir la matriz de valores numéricos en data{2} a una matriz de celdas para que puedas concatenar con la matriz celular de cuerdas en data{1}:

>> data = [data{1} num2cell(data{2})];

data =

    'ABC'    [0.1560]
    'DEF'    [0.1250]
    'GHI'    [0.1010]

Otros consejos

Para deshacerse del uso de doble citas

data = textscan(fid, '%q %f', 'Delimiter', ',');

dónde %q hace la magia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top