remove character from csv file header
7 次查看(过去 30 天)
显示 更早的评论
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().
0 个评论
采纳的回答
Walter Roberson
2018-9-28
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 个评论
Walter Roberson
2018-10-2
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!