You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matlab从批量同格式TXT文件提取Andy的数值至cell array

批量提取TXT文件中Andy的数值并存入Cell Array

嘿,这事儿完全能搞定!既然你要存成cell array,那咱们用MATLAB来处理最顺手——毕竟这是MATLAB的原生数据类型之一。针对你近100个格式统一的TXT文件,下面是一套高效的批量处理方案:

核心思路

你的TXT文件格式非常固定,每个用户的条目都是| 姓名 | 值1 | 值2 | 值3 |的结构,所以我们可以用正则表达式精准定位Andy的那一行,提取对应的三个数值,再循环遍历所有文件完成批量操作。

具体实现步骤&代码

1. 获取所有目标TXT文件的路径

先用dir函数抓取指定目录下的所有TXT文件,自动生成待处理文件的列表:

% 替换成你的TXT文件所在目录,当前目录用'*.txt'即可
fileList = dir('*.txt');
% 初始化存储结果的cell array,每行对应一个文件的三个数值
andyResults = cell(length(fileList), 3);

2. 循环处理每个文件

遍历每个文件,读取内容后用正则表达式匹配Andy的条目,提取数值并存入cell array:

for i = 1:length(fileList)
    % 打开文件,检查是否成功
    fid = fopen(fileList(i).name, 'r');
    if fid == -1
        warning(['跳过文件:无法打开 ', fileList(i).name]);
        andyResults(i, :) = {NaN, NaN, NaN}; % 未找到文件时填充NaN
        continue;
    end
    
    % 读取文件全部内容
    content = fread(fid, '*char')';
    fclose(fid);
    
    % 正则表达式匹配Andy的行,捕获三个数值
    % 这个pattern适配你的格式:| Andy | 数值1 | 数值2 | 数值3 |
    pattern = '\| Andy \| ([\d\.-]+) \| ([\d\.-]+) \| ([\d\.-]+) \|';
    matches = regexp(content, pattern, 'tokens');
    
    if ~isempty(matches)
        % 将字符串转成数值,存入cell array的对应位置
        andyResults(i, 1) = {str2double(matches{1}{1})};
        andyResults(i, 2) = {str2double(matches{1}{2})};
        andyResults(i, 3) = {str2double(matches{1}{3})};
    else
        warning(['文件 ', fileList(i).name, ' 中未找到Andy的条目']);
        andyResults(i, :) = {NaN, NaN, NaN};
    end
end

% 查看最终结果
disp('Andy的所有提取结果:');
disp(andyResults);

额外说明

  • 如果你的TXT文件不在MATLAB当前工作目录,记得修改dir的路径,比如dir('D:/data_files/*.txt')。
  • 正则表达式是这套方案的核心,只要你的文件格式保持不变(Andy的条目始终是| Andy | 值1 | 值2 | 值3 |),这个匹配规则就不会出错。
  • 要是你更习惯用Python,也可以用glob获取文件列表、re模块做正则匹配,然后用嵌套列表来模拟cell array的效果——不过考虑到你明确提到cell array,MATLAB的实现会更直接。

内容的提问来源于stack exchange,提问作者박하영

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:38:23