我有几个.csv文件,我用matlab使用textscan读取,因为csv read和xlsread不支持这种大小的文件200Mb-600Mb。
我用这句话来读:
C = textscan(fileID,'%s%d%s%f%f%d%d%d%d%d%d%d','delimiter',',');
我发现的问题是,有时数据不是这种格式,然后textscan停止读取该行而没有任何错误。
所以我所做的就是这样读
C = textscan(fileID,'%s%d%s%f%f%s%s%s%s%s%s%s%s%s%s%s','delimiter',',');
通过这种方式,我看到300万中有两行的格式发生了变化。
我想看所有的台词,除了那些不好的/不同的台词。
此外,如果可能的话,可以只读取第一个字符串为“PAA”的行有可能吗?
我试着直接把它加载到matlab中,但是速度太慢了,有时会卡住或者对于真正的大问题,它会宣布内存问题。
有什么建议吗?
最佳答案
对于仍然小到足以容纳内存的大型文件,一次解析所有行通常是最佳选择。
f = fopen('data.txt');
g = textscan(f,'%s','delimiter','\n');
fclose(f);
在下一步中,您必须识别以
PAA
usestrncmp
开头的行。现在过滤数据,将上面的textscan表达式应用到每一行如果失败了,试试另一个。