如何使用多个分隔符进行文本扫描

时间:2013-07-25 17:07:30

标签: matlab textscan

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

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'

不起作用。也没有使用分隔符作为'。'。我也试过了你。当它读入时,它会舍入小数。

Le叹息。

1 个答案:

答案 0 :(得分:0)

我刚用MATLAB 2012b尝试了这个,它似乎在我的最后工作。

SCAN_STR = '%s\t%4d.%d.%f\t%d\t%s%*[^\n]'