2012-04-22 12 views
7

मेरे पास निम्न स्ट्रिंग है और मैं इसे अनदेखा करने के लिए सर्वोत्तम अभ्यास का पता लगाने की कोशिश कर रहा हूं।इस स्ट्रिंग को अनदेखा करने के लिए डीकोड() बनाम रेगेक्स का उपयोग करना

समाधान कुछ हद तक लचीला होना चाहिए कि मुझे यह इनपुट एपीआई से प्राप्त हो रहा है और मैं बिल्कुल निश्चित नहीं हो सकता कि वर्तमान चरित्र संरचना (\n\r के विपरीत) हमेशा एक जैसी होगी।

'"If it ain\'t broke, don\'t fix it." \nWent in for a detailed car wash.\nThe attendants raved-up my engine when taking the car into the tunnel. NOTE: my car is...'

इस regex लगता है जैसे कि यह काम करना चाहिए:

text_excerpt = re.sub(r'[\s"\\]', ' ', raw_text_excerpt).strip() 

मैं आसो पढ़ा है कि decode() काम हो सकता है (और एक बेहतर समाधान आम तौर पर होगा)।

raw_text_excerpt.decode('string_unescape') 

उन पंक्तियों के साथ कुछ कोशिश की और यह काम नहीं किया। कोई सुझाव? रेगेक्स यहाँ सबसे अच्छा है?

+1

उचित निष्पक्ष समाधान की तरह लगता है। आप स्ट्रिप के बजाय lstrip का उपयोग कर सकते हैं, लेकिन यह एक बहुत मामूली नाइटपिक है। – Wes

+0

धन्यवाद वेस। मुझे लगता है कि मैं इसे स्ट्रिप के साथ जेनेरिक रखना चाहता था, लेकिन शायद इसकी आवश्यकता नहीं है। किसी भी विचार से मैं रेगेक्स के बजाय डीकोड के साथ एक ही आउटपुट कैसे प्राप्त कर सकता हूं? – Ben

+1

ऐसा लगता है कि इस तरह का कोई भी कोडेक नहीं है जिसे आपने उपयोग करने का प्रयास किया था: http://docs.python.org/library/codecs.html#codec-base-classes – Wes

उत्तर

16

कोडेक आप देख रहे हैं string-escape है:

>>> print "\\'".decode("string-escape") 
' 

मुझे यकीन है कि कौन-सा संस्करण वे इसे में जोड़ा है, हालांकि ... एक पुराने संस्करण हो सकता है आप उपयोग कर रहे है कि नहीं है नहीं कर रहा हूँ यह है। मैं दौड़ रहा हूं:

Python 2.6.6 (r266:84292, Mar 25 2011, 19:36:32) 
[GCC 4.5.2] on linux2 
संबंधित मुद्दे