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