我有一个包含以下内容的文本文件:
GULBERG (source)
MODEL TOWN (destination)
我想提取 GULBERG 和 MODEL TOWN (或此处显示的任何其他名称)并弃掉 (来源) < / strong>和 (目标) 来自使用Matlab的文件。此外,我将这些名称保存到变量STRING{1}
,STRING{2}
以供日后使用。
但我面临的问题是我的代码仅提取&#34; GULBERG&#34;和&#34; MODEL&#34;来自文件而不是第二个单词,即&#34; TOWN&#34; 。
到目前为止我的输出:
GULBERG
MODEL
我如何解决这个问题,以便在输出中得到单词TOWN?
这是我的代码:
fid = fopen('myfile.txt');
thisline = fgets(fid);
a=char(40); %character code for paranthesis (
b=char(41); %character code for paranthesis )
STRING=cell(2,1);
ii=1;
while ischar(thisline)
STRING{ii}=sscanf(thisline,['%s' a b 'source' 'destination']);
ii=ii+1;
thisline = fgets(fid);
end
fclose(fid);
% STRING{1} contains first name
% STRING{2} contains second name
答案 0 :(得分:2)
假设标识符 - (source)
和(destination)
始终显示在要检测的城镇名称之后的行的末尾,请查看这是否适用于您 -
%%// input_filepath and output_filepath are filepaths
%%// of input and output text files
str1 = importdata(input_filepath)
split1 = regexp(str1,'\s','Split')
%%// Store row numbers that do not have (source) or (destination) as a string
ind1 = ~cellfun(@isempty,(regexp(str1,'(source)'))) | ...
~cellfun(@isempty,(regexp(str1,'(destination)')));
str1 = strrep(str1,' (source)','')
str1 = strrep(str1,' (destination)','')
STRING = str1(ind1,:)
%%// Save as a text file
fid = fopen(output_filepath,'w');
for k = 1:size(STRING,1)
fprintf(fid,'%s\n',STRING{k,:});
end
fclose(fid);
答案 1 :(得分:1)
在我等待答案的同时,我做了更多的挖掘工作并找到了解决问题的方法。看起来使用strrep()
替换不需要的单词''
解决了我的问题。
我正在分享这个,所以有类似问题的人可能会觉得这很有帮助!
这就是我的所作所为:
fid = fopen('myfile.txt');
thisline = fgets(fid);
a=char(40);
b=char(41);
STRING=cell(2,1);
index=1;
while ischar(thisline)
STRING{index} = strrep(thisline,'(source)','');
index=index+1;
thisline = fgets(fid);
end
STRING{2} = strrep(STRING{2},'(destination)','');
fclose(fid);