How to use textscan with empty char fields
조회 수: 4(최근 30일)
표시 이전 댓글
How can I use textscan with files that include these kind of lines, with empty chars?
m1 = 'HELLO,42.53,A,B,1,C'; % Only this works fine
m2 = 'HELLO,42.53,A,,1,C';
m3 = 'HELLO,42.53,A,B,1,';
m4 = 'HELLO,42.53,,,1,C';
pattern = 'HELLO%f%c%c%f%c';
delimiter = ',';
[C1, pos1] = textscan(m1, pattern, 'Delimiter', delimiter)
[C2, pos2] = textscan(m2, pattern, 'Delimiter', delimiter)
[C3, pos3] = textscan(m3, pattern, 'Delimiter', delimiter)
[C4, pos4] = textscan(m4, pattern, 'Delimiter', delimiter)
댓글 수: 1
Adam Danz
2021년 11월 18일
Since this doesn't answer the question, How can I use textscan ..., I'll leave a comment rather than an answer.
A workaround is to use strsplit and then some post-processing to convert chars to numbers.
m1 = 'HELLO,42.53,A,B,1,C';
m2 = 'HELLO,42.53,A,,1,C';
m3 = 'HELLO,42.53,A,B,1,';
m4 = 'HELLO,42.53,,,1,C';
cleanStrFcn = @(s)[str2double(s{2}),s(3:end)];
s1 = cleanStrFcn(strsplit(m1,',','CollapseDelimiters',false))
s2 = cleanStrFcn(strsplit(m2,',','CollapseDelimiters',false))
s3 = cleanStrFcn(strsplit(m3,',','CollapseDelimiters',false))
s4 = cleanStrFcn(strsplit(m4,',','CollapseDelimiters',false))
채택된 답변
Jeremy Hughes
2021년 11월 18일
The format specifier %c always reads one character, no matter what that character is. What you likely want it %s, which reads all the characters up to the next matching delimiter.
추가 답변(0개)
참고 항목
범주
Find more on Text Files 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!