我有大量文本文件(制表符分隔数据)需要解析。它们大多格式良好。但是,随机散布的行包含错误字符,如下所示。每个文件中坏行的位置不同,但添加的字符始终相同。
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 的组合来做我想做的事情,但我似乎无法获得正确的参数组合来使其工作。
最佳答案
尝试使用textread
具有 %q
格式字符串的函数。假设问题中的测试数据保存为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
关于matlab - 从格式不良的文件将数据导入 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10833208/