Read csv files by regulare expression function

2 visualizaciones (últimos 30 días)
Damith
Damith el 7 de Mayo de 2015
Comentada: Damith el 8 de Mayo de 2015
Hi,
I have multiple .csv files in the following format from:
TRMM_1998_01_newntcl.csv
TRMM_1998_02_newntcl.csv
.
.
.
TRMM_1998_12_newntcl.csv
TRMM_1999_01_newntcl.csv
.
.
.
TRMM_1999_12_newntcl.csv
I have the following code and I need to modify to read by month (1-12). I appreciate if someone can help me to figure this out and modify the following code.
Thanks in advance.
sad = dir('TRMM_*_newntcl.csv');
cac = regexp( {sad.name}, '1998_[01]\d_[0-3]\_' );
ism = not( cellfun( @isempty, cac ) );
d = sad(ism);
ymdh=cell2mat(textscan([d.name], ...
'TRMM_%4d_%2d_%2d%2d_newntcl.csv', ...
'collectoutput',true));

Respuesta aceptada

Walter Roberson
Walter Roberson el 7 de Mayo de 2015
month_to_match = 8; %for example
str_for_month = sprintf('%02d', month_to_match);
regexp_for_month = [ '^TRMM_[12]\d{3}_[01]\d_' str_for_month '_'];
cac = regexp( {sad.name}, regexp_for_month );
  3 comentarios
Walter Roberson
Walter Roberson el 8 de Mayo de 2015
regexp_for_month = [ '^TRMM_[12]\d{3}_' str_for_month '_'];
Damith
Damith el 8 de Mayo de 2015
OK. Thanks. This worked.

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 7 de Mayo de 2015
Editada: Stephen23 el 7 de Mayo de 2015
You could avoid the whole regexp thing entirely by using my FEX submission datenum8601:
>> N = cellfun(@datenum8601, strrep({sad.name},'_','-'));
>> datevec(N)
ans =
1998 1 1 0 0 0
1998 2 1 0 0 0
1998 12 1 0 0 0
1999 1 1 0 0 0
1999 12 1 0 0 0
  1 comentario
Damith
Damith el 7 de Mayo de 2015
Thanks Stephen.But, I need to somehow use to above approach with regexp function.

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by