Frage

Ich verwende TextScan, um Daten aus einer Datei zu lesen. Die Daten werden gelesen::

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

Mein Code ist - data = textscan(fid, '%s %f', 'Delimiter', ',');

Daten {1} kommen als

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

Ich möchte die Daten {1} als -

'ABC'
'DEF'
'GHI'

Wie kann ich schließlich die Antwort haben als

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

Anstatt Data {1} und Data {2} zu verwenden. Vielen Dank!

War es hilfreich?

Lösung

Es gibt tatsächlich zwei Möglichkeiten, die zu ignorieren " Charaktere beim Lesen Ihrer Saiten. Gemäß Textscan Dokumentation können Sie die verwenden %q Format statt der %s Format:

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

Oder Sie können die Saiten mit dem lesen %s Formatieren und entfernen Sie die " Charaktere von data{1} Verwenden der Funktion Strrep:

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

Dann können Sie die Funktion verwenden Num2cell Um das Array der numerischen Werte in umzuwandeln in data{2} zu einem Zellarray, damit Sie können verketten es mit der Zellarray von Strings in data{1}:

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

data =

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

Andere Tipps

Um die doppelten Zitate zu beseitigen

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

wo %q macht die Magie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top