2010-11-13 14 views
11

मेरे पास एक स्ट्रिंग है जिसमें "LOCAL" शब्द कई बार होता है। मैंने इस शब्द को खोजने के लिए find() फ़ंक्शन का उपयोग किया लेकिन यह एक और शब्द "स्थानीय रूप से" देता है। मैं "स्थानीय" शब्द को बिल्कुल कैसे मेल कर सकता हूं?स्ट्रिंग सटीक मिलान

उत्तर

30

बात इस तरह का के लिए, regexps बहुत उपयोगी होते हैं:

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" को भी प्रतिस्थापित करता है। –

+0

यह वही बात है, लेकिन आप re.findall के बजाय re.sub का उपयोग करते हैं। मैंने अपनी पोस्ट संपादित की। –

+0

धन्यवाद ... यह काम कर रहा है .. मैं इसे तीन दिनों से कोशिश कर रहा था .. आप वास्तव में पाइथन गुरु हैं। –

0

'स्थानीय' के लिए देखो? ध्यान दें कि पायथन केस संवेदनशील है।

0

के लिए \ blocal \ लिए रेगुलर एक्सप्रेशन खोज करना ख

\ b एक "शब्द सीमा" यह लाइनों की शुरुआत शामिल कर सकते हैं, लाइनों, विराम चिह्न, आदि

तुम भी मामले की खोज कर सकते हैं समाप्त होता है insensitively।

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" 

केवल पंक्ति 1 से मेल खाएगी।

संबंधित मुद्दे