2010-11-13 160 views
11

我有一个字符串,其中“LOCAL”一词多次出现。我使用find()函数来搜索这个单词,但它返回另一个单词“本地”以及。我怎样才能完全匹配“本地”一词?字符串完全匹配

回答

30

对于这种事情,正则表达式是非常有用的:

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 *****. 

您可以删除标志= re.IGNORECASE如果你不想忽略的情况下,很明显。

+0

感谢它的工作..但还有一个问题,当我试图用另一个词替换“本地”时,它也替换“本地”,如“***** ly”。 – 2010-11-13 18:03:42

+0

这是一样的事情,但你使用re.sub而不是re.findall。我编辑了我的帖子。 – 2010-11-13 18:06:55

+0

谢谢....它的工作..我试了三天以来..你真的是蟒蛇大师。 – 2010-11-13 18:14:46

0

寻找'本地'?注意Python是区分大小写的。

0

做\ blocal \正则表达式搜索家庭

\ b是“字boundry”它可以包括线路的起点,线,标点符号等

您也可以搜索案结束不区分大小写。

1

你可以使用正则表达式来约束比赛发生在单词边界,就像这样:

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'] 
9

下面你可以使用简单的功能。

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
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" 

只有一号线将匹配。