4

次の形式の行が何千行も含まれているファイルを読み込もうとしています。

AAAAAAAA    2013.99.2314.029    0    OFF    N

タブ区切りファイルです。最後の列はドントケアです。その前の 2 列は変数なので、文字列として読み取ります。私の主な問題は、2 番目の列です。いくつかに分かれた数字です

2013.99.2314.029

は 2013 年、99 日、2314.029 秒です。

textscan を使用してファイル全体を一度に読み取りたいのですが、読み取り時にその複雑な日付文字列を何らかの方法で分割します。

現在、スキャン文字列があります:

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

日付文字列を 2 つの float に読み取ります。私が本当にしたいのは、それを2つのintとfloatに読み込むことです。しかし、使用して

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

それを 2013 と 2314 に切り捨て、残りの行を台無しにします。「。」をエスケープしてみました。と '。' しかし、それはエラーをポップします。

助言がありますか?ファイルのサイズが大きいためにスキャンインされるので、これを行いたいと思います。大規模なデータ セットのタイプを変更しようとすると、メモリが不足します。

編集:

2 つの整数と浮動小数点数を返すには、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 に答える