planet260
planet260

Reputation: 1454

Python -- Search Subsrtring Full Word(s)

I want to find the number of times a substring occurred in a string. I was doing this

termCount = content.count(term)

But if i search like "Ford" it returned result set like

"Ford Motors"         Result: 1 Correct
"cannot afford Ford"  Result: 2 Incorrect
"ford is good"        Result: 1 Correct

The search term can have multiple terms like "Ford Motors" or "Ford Auto". For example if i search "Ford Motor"

"Ford Motors"               Result: 1 Correct
"cannot afford Ford Motor"  Result: 1 Correct
"Ford Motorway"             Result: 1 InCorrect    

What i want is to search them case insensitive and as a whole. Mean if I search a substring it should be contained as a whole as a word or a phrase (In case of multiple terms) not part of the word. And also I need the count of the terms. How do I achieve it.

Upvotes: 0

Views: 133

Answers (2)

Chronicler
Chronicler

Reputation: 59

I would split the strings by spaces so that we have independent words and then from there I would carry out the count.

terms = ['Ford Motors', 'cannot afford Ford', 'ford is good'];
splitWords = [];

for term in terms:
    #take each string in the list and split it into words
    #then add these words to a list called splitWords.

    splitWords.extend(term.lower().split())

print(splitWords.count("ford"))

Upvotes: 0

Kasravnd
Kasravnd

Reputation: 107287

You can use regex, and in this case use re.findall then get the length of matched list :

re.findall(r'\byour_term\b',s) 

Demo

>>> s="Ford Motors cannot afford Ford Motor Ford Motorway Ford Motor."
>>> import re
>>> def counter(str,term):
...    return len(re.findall(r'\b{}\b'.format(term),str))
... 
>>> counter(s,'Ford Motor')
2
>>> counter(s,'Ford')
4
>>> counter(s,'Fords')
0

Upvotes: 3

Related Questions