Python 字符串精确匹配
我有一个字符串,其中单词“LOCAL”出现了很多次。我使用了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基本上是指单词边界。可以是空格、标
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"