2013-08-07 8 views
5

मेरे पास ऐसी स्थिति है जहां कोई उपयोगकर्ता एक पता सबमिट करता है और मुझे मेरी कुंजी पर उपयोगकर्ता इनपुट को प्रतिस्थापित करना होगा। मैं बिना किसी प्रत्यय के पते का उपयोग कर इसमें शामिल हो सकता हूं।regex मैच और कई पैटर्न को प्रतिस्थापित करें

जिन वैगन TRAIL

CHISHOLM TRAIL

झील ट्रेल

CHESTNUT ST

लिंकन स्ट्रीट

रहे हैं:

जिन वैगन

CHISHOLM

झील

CHESTNUT

लिंकन

हालांकि मैं समझ नहीं सकता कैसे इस कोड को केवल अंतिम शब्द को बदलने के लिए लिखा जा सकता है। मैं:

लिंकन

CHESTNUT

CHISHOLM

LAKEAIL

CHISHOLMAIL

सम्मिलित WAGONL

मैं कोशिश की है regex वर्बोज़, re.sub और $।

import re 
target = ''' 

LINCOLN STREET 
CHESTNUT ST 
CHISHOLM TR 
LAKE TRAIL 
CHISHOLM TRAIL 
COVERED WAGON TRL 

''' 
rdict = { 
' ST': '', 
' STREET': '', 
' TR': '', 
' TRL': '', 
} 
robj = re.compile('|'.join(rdict.keys())) 
re.sub(' TRL', '',target.rsplit(' ', 1)[0]), target 
result = robj.sub(lambda m: rdict[m.group(0)], target) 
print result 

उत्तर

6

$ साथ उपयोग re.sub

target = ''' 
LINCOLN STREET 
CHESTNUT ST 
CHISHOLM TR 
LAKE TRAIL 
CHISHOLM TRAIL 
COVERED WAGON TRL 
''' 

import re 
print re.sub('\s+(STREET|ST|TRAIL|TRL|TR)\s*$', '', target, flags=re.M) 
+0

धन्यवाद:

target = ''' LINCOLN STREET CHESTNUT ST CHISHOLM TR LAKE TRAIL CHISHOLM TRAIL COVERED WAGON TRL ''' 

regex का उपयोग करने के लिए कोई जरूरत नहीं है! उसने ऐसा किया – George

2

यदि आप प्रारूप में अपने स्ट्रिंग की दुकान करते हैं:

>>> print '\n'.join([x.rsplit(None, 1)[0] for x in target.strip().split('\n')]) 
LINCOLN 
CHESTNUT 
CHISHOLM 
LAKE 
CHISHOLM 
COVERED WAGON 
संबंधित मुद्दे