Для вашего примера, мне помог параметр EndOfLine
(Windows 10, Octave 5.1.0):
C = textscan(fid, lineFormat, 'Delimiter', ',', 'EndOfLine', '\n')
Вывод кажется правильным:
C =
{
[1,1] =
{
[1,1] = 102
[2,1] = 111
}
[1,2] =
19700101
19700101
[1,3] =
{
[1,1] =
[2,1] =
}
[1,4] =
0.48500
0.48000
[1,5] =
{
[1,1] =
[2,1] =
}
}
Теперь я хотел протестировать ваши %q
столбцы и расширил ваш пример:
102,19700101,,0.485,
111,19700101,,0.48,
111,19700101,,0.48,"test"
111,19700101,"test",0.48,
К сожалению, приведенное выше решение не работает должным образом:
C =
{
[1,1] =
{
[1,1] = 102
[2,1] = 111
[3,1] = 111
[4,1] =
}
[1,2] =
19700101
19700101
19700101
111
[1,3] =
{
[1,1] =
[2,1] =
[3,1] =
[4,1] = 19700101
}
[1,4] =
0.48500
0.48000
0.48000
[1,5] =
{
[1,1] =
[2,1] =
[3,1] = test
}
}
Но при переключении с %q
на %s
в lineformat
все работает как положено:
C =
{
[1,1] =
{
[1,1] = 102
[2,1] = 111
[3,1] = 111
[4,1] = 111
}
[1,2] =
19700101
19700101
19700101
19700101
[1,3] =
{
[1,1] =
[2,1] =
[3,1] =
[4,1] = "test"
}
[1,4] =
0.48500
0.48000
0.48000
0.48000
[1,5] =
{
[1,1] =
[2,1] =
[3,1] = "test"
[4,1] =
}
}
У меня нет объяснения этому; ошибка может быть? Если после этого вы сможете сами избавиться от двойных кавычек, это (все же) может помочь вам.
Надеюсь, это поможет!