0
我想读一堆文本文件。有一个日期栏。日期列的某些文件中的格式为DD-MMM-YYYY
,而在其他文件中的格式为DD-MM-YYYY
。我已经设置了代码来读取第一个样式。但是因为如此,如果它运行到第二种类型,代码会停止,因为它无法读取文件。我该怎么做,If the
textscan doesn't work, try this second way
?Textscan - 抓取错误,并尝试其他的东西
for n = 1:length(data1{id})
fname1 = char(data1{id}(n));
delimiter = '\t';
startRow = 2;
formatSpec = '%s%f%f%f%s%s%s%s%{dd-MMM-yyyy}D%s%s%f%f%f%f%f%f%s%s%s%s%s%s%s%s%f%f%[^\n\r]';
fileID = fopen(fname1,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'EmptyValue' ,NaN,'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n');
fclose(fileID); % Close the text file.
PM25_1{id}{n} = table(dataArray{1:end-1}, 'VariableNames', {'MonitorID','POC','Latitude','Longitude','Datum','ParameterName','SampleDuration','PollutantStandard','DateLocal','UnitsofMeasure','EventType','ObservationCount','ObservationPercent','ArithmeticMean','FirstMaxValue','FirstMaxHour','AQI','MethodName','LocalSiteName','Address','StateName','CountyName','CityName','CBSAName','DateofLastChange','DateNum','NumberOfPOCs'});
clearvars filename delimiter startRow formatSpec fileID dataArray ans;
end
谢谢。这工作。在读取日期之前,如何使用'if/else'子句检查日期列的格式? – shizishan
@shizishan你不能预先。我建议只阅读第二行,提取日期字符串,然后确定其形式。将该表单保存为字符串,然后使用指定的格式读取整个文件。 – Adriaan
如何确定日期字符串的形式而不必自己查看? – shizishan