4

我正在尝试读取包含数千行格式的文件:

AAAAAAAA    2013.99.2314.029    0    OFF    N

这是一个制表符分隔的文件。最后一列是无关紧要的。之前的两列是可变的,所以我将它们作为字符串读取。我的主要问题是第二列。它是一个分为几个部分的数字

2013.99.2314.029

是 2013 年,第 99 天,第二个 2314.029。

我想使用 textscan 一次读取整个文件,但是在我读取它时以某种方式拆分了那个复杂的日期字符串。

目前我有扫描字符串:

SCAN_STR = '%s\t%f.%f\t%s\t%s\t%*s'

它将日期字符串读入两个浮点数。我真正想要的是把它读成两个整数和一个浮点数。但是使用

SCAN_STR = '%s\t%d.%d.%f\t%s\t%s\t%*s'

将其截断为 2013 和 2314 并弄乱该行的其余部分。我试图逃避'。和 '。' 但这会弹出一个错误。

有什么建议么?由于文件很大,我想这样做,因为它被扫描了。当您开始尝试更改大型数据集的类型时,内存不足。

编辑:

真的,我需要一个 2013.99.2314.029 的扫描字符串来返回两个整数和一个浮点数。

'%d.%d.%f'

不工作。也不使用分隔符作为“.”。我也试过 %u 。它在读取小数点时四舍五入。

乐叹息。

4

1 回答 1

0

我刚刚用 MATLAB 2012b 试过这个,它似乎对我有用。

SCAN_STR = '%s\t%4d.%d.%f\t%d\t%s%*[^\n]'
于 2013-07-26T03:03:07.723 回答