String exact match

Posted on

Question :

String exact match

I have a string in which the word “LOCAL” occurs many times. I used the find() function to search for this word but it returns another word “Locally” as well. How can I match the word “local” exactly?

Answer #1:

For this kind of thing, regexps are very useful :

import re

print(re.findall('\blocal\b', "Hello, locally local test local."))
// ['local', 'local']

b means word boundary, basically. Can be space, punctuation, etc.

Edit for comment :

print(re.sub('\blocal\b', '*****', "Hello, LOCAL locally local test local.", flags=re.IGNORECASE))
// Hello, ***** locally ***** test *****.

You can remove flags=re.IGNORECASE if you don’t want to ignore the case, obviously.

Answered By: Vincent Savard

Answer #2:

Below you can use simple function.

def find_word(text, search):

   result = re.findall('\b'+search+'\b', text, flags=re.IGNORECASE)
   if len(result)>0:
      return True
   else:
      return False

Using:

text = "Hello, LOCAL locally local test local."
search = "local"
if find_word(text, search):
  print "i Got it..."
else:
  print ":("
Answered By: Guray Celik

Answer #3:

line1 = "This guy is local"
line2 = "He lives locally"

if "local" in line1.split():
    print "Local in line1"
if "local" in line2.split():
    print "Local in line2"

Only line1 will match.

Answered By: Toshiro

Answer #4:

You could use regular expressions to constrain the matches to occur at the word boundary, like this:

import re
p = re.compile(r'blocalb')
p.search("locally") # no match
p.search("local") # match
p.findall("rty local local k") # returns ['local', 'local']
Answered By: ssegvic

Answer #5:

Do a regular expression search for blocalb

b is a “word boundry” it can include beginnings of lines, ends of lines, punctuation, etc.

You can also search case insensitively.

Answered By: OmnipotentEntity

Answer #6:

Look for ‘ local ‘? Notice that Python is case sensitive.

Answered By: Danny Navarro

Answer #7:

Using Pyparsing:

import pyparsing as pp

def search_exact_word_in_string(phrase, text):

    rule = pp.ZeroOrMore(pp.Keyword(phrase))  # pp.Keyword() is case sensitive
    for t, s, e in rule.scanString(text):
      if t:
        return t
    return False

text = "Local locally locale"
search = "Local"
print(search_exact_word_in_string(search, text))

Which Yields:

['Local']

Answered By: Raphael

Answer #8:

quote = "No good deed will go unrewarded"

location = quote.rfind("go")
print(location)
// use rfind()
Answered By: Agoo Clinton

Leave a Reply

Your email address will not be published. Required fields are marked *