Counting the number of a specific word in text.

8 views (last 30 days)
I want to create a program, tah will count specific words in text. I wrote this:
filename='File name : ';
word= 'Searched word : ';
A=input(filename,'s');
B=input(word,'s');
count=0;
fid=fopen(filename);
C=textscan(fid,'%/s');
for i=1:lenght(C{1})
words=char(C{1}(i));
words=strrep(words,'.','');
words=strrep(words,',','');
if (strcmp(words,word))
count=count+1;
end
end
But this program isn't working.
I got:
Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in count_word (line 7)
C=textscan(fid,'%/s'
  3 Comments
pawlo392
pawlo392 on 13 May 2019
Edited: pawlo392 on 13 May 2019
Ok, I didn't see this:
fid=fopen(filename);
Should be:
fid=fopen(A);
But, Now I got:
Error using textscan
Unable to parse the format character vector at position 1 ==> %/s
Unsupported format specifier '%/'. See the documentation for TEXTSCAN for
supported formats.
Guillaume
Guillaume on 13 May 2019
Well, yes as the error message says, %/s is not a valid format specifier. The / has no place there.

Sign in to comment.

Accepted Answer

Jan
Jan on 13 May 2019
Edited: Jan on 13 May 2019
Use uigetfile instead of an fragile input command. But even then you should check the output of fopen:
[fid, msg] = fopen(filename);
assert(fid ~= -1, 'Cannot open file %s: %s', filename, msg);
Instead of using the cells created by textscan, the import as char vector is easier:
[filename, pathname] = uigetfile;
file = fullfile(filepath, filename);
word = input('Searched word : ', 's');
str = fileread(file);
str(ismember(str, '.,:!"''?')) = ' '; % Replace punctuation
str = [' ', str, ' '];
match = strfind(str, [' ', word, ' ']);
count = numel(match);

More Answers (1)

Image Analyst
Image Analyst on 13 May 2019
Instead of
A=input(filename,'s');
try this:
[folder, baseFileName] = uigetfile('*.*');
filename = fullfile(folder, baseFileName)

Categories

Find more on Large Files and Big Data in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!