我需要解析一大堆文本文件(制表符分隔数据)。它们大多格式化。但是,有随机散布的行包含错误的字符,如下所示。每个文件中坏行的位置不同,但添加的字符总是相同的。
1 3
2 873
3 46
23 99798
23 1
353 79
"23 ," 967
35 8028
253 615
"235 ," 3924
345 188
345 579
345 419
56 16835
23 449
importdata(filename)将所有数据导入到第一个格式错误的行,然后忽略文件的其余部分。我认为我可以通过fopen和textscan的组合来做我想做的事情,但我似乎无法得到正确的参数组合以使其工作。
答案 0 :(得分:2)
使用带有%q
格式字符串的textread
函数。假设问题中的测试数据保存为test.txt
:
>> [a, b] = textread('test.txt', '%q %q');
>> a'
ans =
Columns 1 through 9
'1' '2' '3' '23' '23' '353' '23 ,' '35' '253'
Columns 10 through 15
'235 ,' '345' '345' '345' '56' '23'
>> b'
ans =
Columns 1 through 9
'3' '873' '46' '99798' '1' '79' '967' '8028' '615'
Columns 10 through 15
'3924' '188' '579' '419' '16835' '449'
然后,您可以使用str2double
删除a
中的尾随列。例如:
>> str2double(a)'
ans =
Columns 1 through 13
1 2 3 23 23 353 23 35 253 235 345 345 345
Columns 14 through 15
56 23