Python 字符串精确匹配

Python 字符串精确匹配,python,string,Python,String,我有一个字符串,其中单词“LOCAL”出现了很多次。我使用了find()函数来搜索这个单词,但它也会返回另一个单词“local”。如何精确匹配“local”一词?查找“local”?请注意,Python是区分大小写的。对于这种情况,regexp非常有用: import re print(re.findall('\\blocal\\b', "Hello, locally local test local.")) // ['local', 'local'] \b基本上是指单词边界。可以是空格、标

我有一个字符串,其中单词“LOCAL”出现了很多次。我使用了
find()
函数来搜索这个单词,但它也会返回另一个单词“local”。如何精确匹配“local”一词?

查找“local”?请注意,Python是区分大小写的。

对于这种情况,regexp非常有用:

import re

print(re.findall('\\blocal\\b', "Hello, locally local test local."))
// ['local', 'local']
\b基本上是指单词边界。可以是空格、标点符号等

编辑以供评论:

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

显然,如果不想忽略大小写,可以删除flags=re.IGNORECASE。

对\blocal\b执行正则表达式搜索

\b是一个“单词边界”,它可以包括行首、行尾、标点符号等


您也可以不敏感地搜索大小写。

您可以使用正则表达式约束匹配在单词边界处出现,如下所示:

import re
p = re.compile(r'\blocal\b')
p.search("locally") # no match
p.search("local") # match
p.findall("rty local local k") # returns ['local', 'local']

下面您可以使用简单的函数

def find_word(text, search):

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

text = "Hello, LOCAL locally local test local."
search = "local"
if find_word(text, search):
  print "i Got it..."
else:
  print ":("
只有第1行匹配。

使用Pyparsing:

将pyparsing导入为pp
def搜索字符串中的精确单词(短语、文本):
rule=pp.ZeroOrMore(pp.Keyword(短语))#pp.Keyword()区分大小写
对于rule.scanString(文本)中的t、s、e:
如果t:
返回t
返回错误
text=“本地语言环境”
search=“本地”
打印(在字符串中搜索精确的单词(搜索,文本))
这将产生:

['Local']

quote=“任何善行都不会得不到回报”
位置=quote.rfind(“go”)
打印(位置)
//使用rfind()

谢谢你的工作。。但是,当我试图用另一个词替换“Local”时,还有一个问题,它也替换了“Local”,比如“*******ly”。这是一样的,但是您使用re.sub而不是re.findall。我编辑了我的帖子。谢谢你。。。。它起作用了。。三天以来我一直在试。。你真的是python大师。如果你动态搜索的话,这个解决方案不是一直有效的。我是这样做的。。。。var=“search element”find=“\\b”+var+“\\b”result=re.findall(find,text)正则表达式“\\b”搜索更耗时,因此如果您想提高性能,您应该执行“if-pinder in-hay和len(re.findall(\\b”+pinder+“\\b”,hay))>0:”虽然此代码可能会回答问题,提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
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"