2012-10-31 19 views
0

有沒有辦法將多個正則表達式合併爲一個,因此它可以在一次傳遞中執行不同的子事務?Python使用Regex Sub多次1遍

no_Punct = re.sub('(\w)([?:!.,;-]+)(\s)',r'\1 ',raw) 
no_Punct = re.sub('(\s)([-]+)(\s)',r'\1',no_Punct) 

輸入字符串是'raw'。我試圖去掉單詞末尾的某些標點符號,並刪除每邊都有一個空格包圍的連字符。我可以將這兩個結合成一個聲明嗎?

鑑於以下內容的輸入: 這是一個句子!四分之一等於0.25。

輸出是: 這是一個句子四分之一等於0.25

+1

你能展示一些樣本輸入和預期輸出嗎? –

+0

添加樣本輸入/輸出。 –

回答

5

中平凡,只是由一個替換成其他:

no_Punct = re.sub('(\s)([-]+)(\s)', r'\1', re.sub('(\w)([?:!.,;-]+)(\s)', r'\1 ', raw)) 

雖然這也可能工作:

no_Punct = re.sub('(?<=\w)[?:!.,;-]+(?=\s)|(?<=\s)-+\s', '', raw) 
+1

對於您發佈的第一種方法,是不是還會有兩個通行證?一次通過消除一個單詞/句子末尾的所有標點符號,然後該輸出被輸入到下一個子句中。這仍然看起來像2穿過整個字符串。那是對的嗎? –