如何删除/丢弃文本文件中字符串中的某些单词?

时间:2014-05-07 11:04:25

标签: string matlab substring text-processing

我有一个包含以下内容的文本文件:

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

2 个答案:

答案 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);