Matlab textscan formatspec定界符错误

Matlab textscan formatspec定界符错误,matlab,csv,delimiter,large-files,textscan,Matlab,Csv,Delimiter,Large Files,Textscan,当读取大型csv文件时,Matlab不会将| | |,| |作为textscan的输入参数。数据如下(简化): 等等 我使用data=textscan(fileID,formatSpec,'Delimiter',',')读取具有某种格式规范的数据'%f%f%f' 我的橡皮筋解决方案是使用010编辑器将所有“| |”替换为“”,使其成为适合matlab的csv文件,但由于文档的大小(6M行,约35个字段)和新文档的频率,这并不是一个很好的解决方案 有人知道导入此类文件的正确方法吗?您应该能够将其包

当读取大型csv文件时,Matlab不会将| | |,| |作为textscan的输入参数。数据如下(简化):

等等

我使用
data=textscan(fileID,formatSpec,'Delimiter',',')
读取具有某种格式规范的数据
'%f%f%f'

我的橡皮筋解决方案是使用010编辑器将所有“| |”替换为“”,使其成为适合matlab的csv文件,但由于文档的大小(6M行,约35个字段)和新文档的频率,这并不是一个很好的解决方案


有人知道导入此类文件的正确方法吗?

您应该能够将其包含在格式说明符中:

data = textscan(fid, '||%f||,||%f||,||%f||', 'headerlines', 1)
然后省略分隔符

编辑(以下是评论)

如果您试图读取字符串,诀窍是让它在不使用
字符的情况下读取字符串。这是使用
%[^ |]
完成的,如下所示:

data = textscan(fid, '|| %[^|] ||,|| %[^|] ||,|| %[^|] ||', 'headerlines', 1)

您应该能够将其包含在格式说明符中:

data = textscan(fid, '||%f||,||%f||,||%f||', 'headerlines', 1)
然后省略分隔符

编辑(以下是评论)

如果您试图读取字符串,诀窍是让它在不使用
字符的情况下读取字符串。这是使用
%[^ |]
完成的,如下所示:

data = textscan(fid, '|| %[^|] ||,|| %[^|] ||,|| %[^|] ||', 'headerlines', 1)

您应该能够将其包含在格式说明符中:

data = textscan(fid, '||%f||,||%f||,||%f||', 'headerlines', 1)
然后省略分隔符

编辑(以下是评论)

如果您试图读取字符串,诀窍是让它在不使用
字符的情况下读取字符串。这是使用
%[^ |]
完成的,如下所示:

data = textscan(fid, '|| %[^|] ||,|| %[^|] ||,|| %[^|] ||', 'headerlines', 1)

您应该能够将其包含在格式说明符中:

data = textscan(fid, '||%f||,||%f||,||%f||', 'headerlines', 1)
然后省略分隔符

编辑(以下是评论)

如果您试图读取字符串,诀窍是让它在不使用
字符的情况下读取字符串。这是使用
%[^ |]
完成的,如下所示:

data = textscan(fid, '|| %[^|] ||,|| %[^|] ||,|| %[^|] ||', 'headerlines', 1)


我想说的是,找到一种方法,将您的文件创建为逗号分隔的文件,而不是饼图逗号管道分隔的文件。也就是说,您可能可以将两个管道作为一个字符串,并以这种方式将它们分开,即,
%s%f%s
作为格式规范。文件的创建不取决于我,因此我无法将其设置为真正的逗号分隔文件。我想说,找到一种方法将文件创建为逗号分隔文件,而不是饼状逗号分隔文件。也就是说,您可能可以将两个管道作为一个字符串,并以这种方式将它们分开,即,
%s%f%s
作为格式规范。文件的创建不取决于我,因此我无法将其设置为真正的逗号分隔文件。我想说,找到一种方法将文件创建为逗号分隔文件,而不是饼状逗号分隔文件。也就是说,您可能可以将两个管道作为一个字符串,并以这种方式将它们分开,即,
%s%f%s
作为格式规范。文件的创建不取决于我,因此我无法将其设置为真正的逗号分隔文件。我想说,找到一种方法将文件创建为逗号分隔文件,而不是饼状逗号分隔文件。也就是说,您可能可以将两个管道作为一个字符串,并以这种方式将它们分开,即
%s%f%s
作为格式规范。文件的创建不取决于我,因此我无法将其设置为真正的逗号分隔文件。现在不是将所有数字都放在一个单元格中吗?i、 e.
textscan(fid,“| |%f |,”,“,”)
好吧,是的,如果你做
textscan(fid,“| |%f |,”,“delimiter,”,“,”)
你在一个单元格中得到所有信息。但是用我所做的,我在三个单元格中得到了结果——只是检查了一下。啊,你的意思是他可能想要所有的结果都在一个单元格中吗?不,当然不是。我认为您的解决方案做到了这一点,因为您没有指定分隔符。感谢您的回复!它可以很好地处理数字,但当它试图读取字符串时,就会出错。这两个条目被解读为
CFF1368176799564369A951 | | | | | | | | 2013-05-02 | |
。在此文本扫描后,将停止读取。有什么建议吗?我尝试过在格式规范中混用%[^ |]但没有成功。现在不是把所有数字都放在一个单元格中吗?i、 e.
textscan(fid,“| |%f |,”,“,”)
好吧,是的,如果你做
textscan(fid,“| |%f |,”,“delimiter,”,“,”)
你在一个单元格中得到所有信息。但是用我所做的,我在三个单元格中得到了结果——只是检查了一下。啊,你的意思是他可能想要所有的结果都在一个单元格中吗?不,当然不是。我认为您的解决方案做到了这一点,因为您没有指定分隔符。感谢您的回复!它可以很好地处理数字,但当它试图读取字符串时,就会出错。这两个条目被解读为
CFF1368176799564369A951 | | | | | | | | 2013-05-02 | |
。在此文本扫描后,将停止读取。有什么建议吗?我尝试过在格式规范中混用%[^ |]但没有成功。现在不是把所有数字都放在一个单元格中吗?i、 e.
textscan(fid,“| |%f |,”,“,”)
好吧,是的,如果你做
textscan(fid,“| |%f |,”,“delimiter,”,“,”)
你在一个单元格中得到所有信息。但是用我所做的,我在三个单元格中得到了结果——只是检查了一下。啊,你的意思是他可能想要所有的结果都在一个单元格中吗?不,当然不是。我认为您的解决方案做到了这一点,因为您没有指定分隔符。感谢您的回复!它可以很好地处理数字,但当它试图读取字符串时,就会出错。这两个条目被解读为
CFF1368176799564369A951 | | | | | | | | 2013-05-02 | |
。在此文本扫描后,将停止读取。有什么建议吗?我尝试过在格式规范中混用%[^ |]但没有成功。现在不是把所有数字都放在一个单元格中吗?i、 e.
textscan(fid,“| |%f |,”,“,”)
好吧,是的,如果你做
textscan(fid,“| |%f |,”,“delimiter,”,“,”)
你在一个单元格中得到所有信息。但是用我所知道的