You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MATLAB使用textscan读取格式化文本时出现解析错误的问题

解决textscan解析时间格式的错误问题

你遇到的这个textscan解析错误,问题出在时间格式符的定义上,我帮你梳理下原因和修复方案:

问题根源

你写的时间格式是%{hh:mm:ss.SSS}T,这里的hh是MATLAB里12小时制的小时标识符,它要求文本里的时间必须附带AM/PM标识(比如08:15:30.456 AM)。但从你的错误提示和场景来看,你的文本时间应该是24小时制的(比如14:22:10.789),用hh就会导致解析失败。

修正后的代码

把时间格式里的hh改成24小时制对应的HH,修正后的代码如下:

filename = 'myFile.txt'; 
fid = fopen(filename); 
% 先判断文件是否成功打开,避免后续报错
if fid == -1
    error('无法打开目标文件,请检查路径或文件权限');
end
myData = textscan(fid, '%u64 %{dd/MM/yyyy}D %{HH:mm:ss.SSS}T %f64 %f64 %u64 %f64 %f64 %f64', 'HeaderLines', 3); 
fclose(fid);

额外排查建议

如果修改后还是报错,可以再检查这几点:

  • 确认文本第4行(跳过3行表头后)的时间格式和HH:mm:ss.SSS完全匹配,比如毫秒部分是不是三位数字、有没有多余的分隔符。
  • 核对日期格式dd/MM/yyyy是否和文本一致,比如会不会是MM/dd/yyyy的月在前格式,这是很容易搞混的点。
  • 检查文件里的列分隔符是不是空格,如果是制表符或逗号,需要在textscan里指定'Delimiter'参数。

内容的提问来源于stack exchange,提问作者IndustProg

火山引擎 最新活动