Using readtable with double-quote strings in .csv file
17 views (last 30 days)
Show older comments
a.tom on 17 Feb 2015
Answered: Al in St. Louis on 19 May 2022
I am trying to read in a .csv file with double-quoted strings (i.e. "asdf") separated by commas. It does not seem that readtable can handle this gracefully when I have a string that contains a comma (i.e. "asdf,asdf"). It sees this as additional columns or something. The .csv file works fine with Excel 2007.
A sample/example file 'runFile.csv' with 3 columns. The top-row is:
"runName" is an arbitrary string that may contain commas. "runCount", "resultVal" are doubles/integers.
Full sample file:
When I run this in R2014b-64b (under Windows 7, 64-bit), I get:
>> T = readtable('runFile.csv')
Error using readtable (line 129)
Cannot interpret data in the file "runFile.csv'. Found 4 variable names but 6 data columns. You may need to specify a different format string, delimiter, or number of header lines.
I tried to use the extra parameter 'Format' with '%s%f%f' or something, but could not get it to work. I tried variations like '"%s"%f%f or something to no success.
I see that the release notes for R2014b shows some note about writetable now supporting double-quote strings using the 'QuoteStrings' parameter, but I could not find much more about this, or whether it is supported in readtable.
Kuang-Chieh Yen on 10 Sep 2016
Edited: Kuang-Chieh Yen on 10 Sep 2016
The data format, %q, can be used to read data with double-quotes. So, you should replace %f and by %q. Maybe it works well. Moreover, I also recommend to run "datastore", for example
% get the information of yourdata
ds = datastore('yourdata.csv');
% import yourdata into T
T = read(ds);
HOPE IT USEFUL !
Switch from MATLAB to Python. Pandas has no problem with a properly constructed CSV file. It's sad that readtable can't parse something this simple.
Find more on Spreadsheets in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!