Azzera filtri
Azzera filtri

remove character from csv file header

10 visualizzazioni (ultimi 30 giorni)
How can a file be opened, then remove a character and save the file?
The attached csv file , test.csv, contains the following data:
a,b,c,
1,2,3
4,5,6
7,8,9
I need to remove the comma at the end of the header in order to properly read column variable names using readtable().

Risposta accettata

Walter Roberson
Walter Roberson il 28 Set 2018
You do not need to do that. There some other approaches you can take:
1) readtable() the file as-is. In R2018b at least, that will return a table with 3 variables named Var1, Var2, Var3 -- the original header will be gone . If you need to, you can assign the names to the Properties.VariableNames property of the table
2) Similar to the above, but you also
T = readtable('test.csv');
fid = fopen('test.csv', 'rt');
S = fgetl(fid);
fclose(fid);
varnames = regexp(S, ',', 'split);
varnames( cellfun(@isempty, varnames) ) = []; %remove any trailing empty fields
T.Properties.VariableNames = matlab.lang.makeUniqueStrings(matlab.lang.makeValidName(varnames));
3) Use textscan() to read the file, either with or without bothering to extract the variable names
4) If you do not need the variable names,
csvread('test.csv', 1, 0)
The 1 tells it to skip 1 row; the 0 tells it to skip zero columns.
  1 Commento
Walter Roberson
Walter Roberson il 2 Ott 2018
There is another option for R2016b or later:
filename = 'test.csv';
opt = detectImportOptions(filename);
opt.VariableDescriptionsLine = 1;
data = readtable(filename, opt);
data.Properties.VariableNames = matlab.lang.makeUniqueStrings(matlab.lang.makeValidName(data.Properties.VariableDescriptions));
Grotty, but functional.

Accedi per commentare.

Più risposte (0)

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by