Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 从路径名中提取信息_Matlab_Text Extraction - Fatal编程技术网

Matlab 从路径名中提取信息

Matlab 从路径名中提取信息,matlab,text-extraction,Matlab,Text Extraction,我想在MATLAB中编写一个脚本,用特定的名称保存输出数据。此名称的所有信息都位于输入数据的路径中,如下所示: path = 'C:\projektions100\algorithm1\method_A\data1'; projection = algorithm = method = data = 然后,脚本应该从相邻的反斜杠中提取路径中带有关键字(f.e.method)的文本,以便在我对某些文件夹名称犯拼写错误时,脚本更灵活。 但我不能简单地使用反斜杠,因为路径中有一些反斜杠。 如

我想在MATLAB中编写一个脚本,用特定的名称保存输出数据。此名称的所有信息都位于输入数据的路径中,如下所示:

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'