2012-04-22 28 views
7

我有下面的字符串,我試圖找出解決它的最佳做法。使用decode()與正則表達式來避開這個字符串

該解決方案必須具有一定的靈活性,因爲我從API接收到此輸入,並且我不能完全確定當前字符結構(\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...'

此正則表達式看起來像它應該工作:

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

我ASO閱讀decode()可能的工作(和會是一個更好的解決方案通常情況下)。

raw_text_excerpt.decode('string_unescape') 

嘗試沿着這些路線的東西,它沒有奏效。有什麼建議麼?這裏最好的是正則表達式嗎?

+1

似乎是一個公平的解決方案。你可以使用lstrip而不是strip,但這是一個非常小的挑剔。 – Wes 2012-04-22 14:57:26

+0

謝謝Wes。我想我想保持通用帶,但可能不需要。任何想法如何我可以達到與解碼相同的輸出,而不是正則表達式? – Ben 2012-04-22 15:05:03

+1

似乎沒有您嘗試使用的編解碼器:http://docs.python.org/library/codecs.html#codec-base-classes – Wes 2012-04-22 15:12:07

回答

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 
相關問題