我正在使用readtable
来阅读底部包含一行垃圾的.csv
:
ColA, ColB, ColC,
42 , foo , 1.1
666 , bar , 2.2
SomeGunk, 101
(是的,第一行有一个尾随,
,但这似乎不是问题)
...这会扰乱readtable
:
>> readtable(file)
Error using readtable (line 197)
Reading failed at line 4. All lines of a text file must
have the same number of delimiters. Line 4 has 2 delimiters,
while preceding lines have 3.
Note: readtable detected the following parameters:
'Delimiter', ',', 'HeaderLines', 1, 'ReadVariableNames', false, 'Format',
'%f%q%q%q%q%f%f%f%D%D%q%q%f%f%f%f%f%f%f%f%f'
我该怎么办?
有没有什么东西不能读取文件并再次将其写回去减去最后一行?这看起来很笨拙。如果我必须这样做,最干净的方法是什么?
答案 0 :(得分:2)
readtable
功能可让您手动定义注释符号。来自文档:
例如,指定
'%'
之类的字符以忽略同一行上符号后面的文本。指定两个字符向量的单元格数组,例如{'/*', '*/'}
,以忽略这些序列之间的任何文本。
这意味着,您可以将'someGunk'
定义为评论符号,即以'someGunk'
开头的任何行都将被忽略:
>> readtable('gunk.csv', 'Delimiter', ',', 'CommentStyle', 'SomeGunk')
ans =
2×3 table
Var1 Var2 Var3
____ ______ ____
42 'foo ' 1.1
666 'bar ' 2.2
这仅适用于以下条件:1)垃圾行总是以'SomeGunk'
开头,2)'SomeGunk'
不会出现在文件的任何其他位置,并且3 )你不需要任何其他评论符号。