matlab - 从格式不良的文件将数据导入 Matlab

标签 matlab file-io import csv

我有大量文本文件(制表符分隔数据)需要解析。它们大多格式良好。但是,随机散布的行包含错误字符,如下所示。每个文件中坏行的位置不同,但添加的字符始终相同。

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/

相关文章:

performance - 在matlab中对矩阵元素求和的有效(最快)方法

matlab - 是否可以在 MATLAB 中使用递归匿名函数?

c - 用于 Direct FeedThrough 的 Matlab simulink c 函数显示意外结果

matlab - 如何将 Matlab 直方图保存为矢量图形?

java - 如何处理一个823237个字符的字符串

c# - 使用 C# 读取数百万个小文件

python - 导入外部包的正确约定是什么?

java - 移动正在处理的文件

python - 如何重新加载在另一个文件中导入的Python模块?

Java 导入与代码性能