Matlab 从路径名中提取信息
我想在MATLAB中编写一个脚本,用特定的名称保存输出数据。此名称的所有信息都位于输入数据的路径中,如下所示:Matlab 从路径名中提取信息,matlab,text-extraction,Matlab,Text Extraction,我想在MATLAB中编写一个脚本,用特定的名称保存输出数据。此名称的所有信息都位于输入数据的路径中,如下所示: path = 'C:\projektions100\algorithm1\method_A\data1'; projection = algorithm = method = data = 然后,脚本应该从相邻的反斜杠中提取路径中带有关键字(f.e.method)的文本,以便在我对某些文件夹名称犯拼写错误时,脚本更灵活。 但我不能简单地使用反斜杠,因为路径中有一些反斜杠。 如
path = 'C:\projektions100\algorithm1\method_A\data1';
projection =
algorithm =
method =
data =
然后,脚本应该从相邻的反斜杠中提取路径中带有关键字(f.e.method)的文本,以便在我对某些文件夹名称犯拼写错误时,脚本更灵活。
但我不能简单地使用反斜杠,因为路径中有一些反斜杠。
如何继续?问题在于如何找到关键字的结尾。下面是一个位代码,它循环遍历关键字并在路径中查找它们(存储在
p2fldr
中,因为变量path
在MATLAB中返回工作路径,如果您定义它,则会将其覆盖)
如果知道它们始终位于路径的最后4个条目中,则可以构建快捷方式,因此可以立即使用strsplit
,并为最后返回的单元格编制索引
str_splt = strsplit(p2fldr,filesep);
Tag = cell(size(kyWrd));
for i = 1:length(kyWrd)
% index cells
str = str_splt{end-length(kyWrd)+i};
% get keyword
ky = kyWrd{i};
Tag{i} = str(length(ky)+1:end);
end
请注意,这并不关心它是否与您的关键字匹配(例如,您的路径显示
'projektions'
,但我将关键字定义为'projection'
)您只需使用带有命名标记的regexp
:
>> path = 'C:\projektions100\algorithm1\method_A\data1';
>> all=regexp(path,'[^\\]+\\proje[ck]tion(?<projection>[^\\]+)\\algorithm(?<algorithm>[^\\]+)\\method(?<method>[^\\]+)\\data(?<data>.+$)','names')
all =
struct with fields:
projection: 's100'
algorithm: '1'
method: '_A'
data: '1'
路径='C:\projektions100\algorithm1\method\u A\data1';
>>all=regexp(路径,[^\\]+\\proje[ck]tion(?[^\\]+)\\algorithm(?[^\\]+)\\method(?[^\\]+)\\data(?.+$),'names')
全部=
带字段的结构:
投影:“s100”
算法:“1”
方法:''u A'
数据:“1”
dir()
提供目录列表,包括路径名。然后,您可以使用strsplit()
分隔字符串(dir.folder
,在您的示例中),在字符串中使用反斜杠作为分隔符。然后,您将所有文件夹名称放在单独的字符串中,以便您可以选择所需的文件夹名称。谢谢!使用k=strfind(C,'argorithm')算法=C(find(~cellfun(@isempty,k))代码>我还可以找到我的wordGreat!请注意,在堆栈溢出时发布您自己问题的答案是完全可以接受的,只需确保遵循中的规则即可。请这样做,因为这使这个职位更容易找到在未来。
>> path = 'C:\projektions100\algorithm1\method_A\data1';
>> all=regexp(path,'[^\\]+\\proje[ck]tion(?<projection>[^\\]+)\\algorithm(?<algorithm>[^\\]+)\\method(?<method>[^\\]+)\\data(?<data>.+$)','names')
all =
struct with fields:
projection: 's100'
algorithm: '1'
method: '_A'
data: '1'