TEXTSCAN is my personal nemesis: Quotes strings with commas
이전 댓글 표시
Dear all,
I thought I acquired some Matlab knowledge over the years. But textscan really makes me feel dumb. I can not figure out the syntax to read a quoted text file.
Let's say I have a text file with the following format:
"L1: quoted text, with commas","111.111",123\n
"L2: quoted text, with commas","222.222",234\n
...
(the field width are the same just for the example; consider them variable in the real world).
Now my understanding of textscan's formatSpec would be:
format = '%q,"%f",%f';
delim = '\n';
res = textscan(fileId,format,'Delimiter',delim,'ReturnOnError',false);
This is because I am assuming that %q considers everything between two quotes as part of the same string, as the help states
"If the string begins with a double quotation mark ("), omit the leading quotation mark
and its accompanying closing mark, which is the second instance of a lone double
quotation mark"
However this fails with the ominous error message:
Error using textscan
Mismatch between file and format string.
Trouble reading 'Literal' field from file (row number 1, field number 2) ==>
"L2: quoted text, with commas","222.222",234\n
So the commas in the quoted string somehow screw-up the parsing, since using the regexp-like
format = '"%[^"]","%f",%f';
instead of %q works perfectly fine.
So my questions are:
- What am I doing wrong?
- Why is there the %q option if it does not treat everything in between as string (as this would than simply be a shorthand for "%s")?
- Am I using the delimiter option correctly?
Any help appreciated!
Greetings, David
댓글 수: 2
John D'Errico
2017년 2월 13일
But without a nemesis, life might get boring. :)
David J. Mack
2017년 2월 13일
채택된 답변
추가 답변 (2개)
Jeremy Hughes
2017년 2월 16일
If you have access to R2016b, try using detectImportOptions with readtable.
opts = detectImportOptions(yourfile);
T = readtable(yourfile,opts)
I think this will do what you want without a lot of fuss.
David J. Mack
2017년 2월 13일
편집: David J. Mack
2017년 2월 13일
댓글 수: 1
Serge
2018년 5월 27일
Any suggestions for this question:
https://au.mathworks.com/matlabcentral/answers/402792-yet-another-textscan-question
카테고리
도움말 센터 및 File Exchange에서 Data Import and Export에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!