2014-03-28 70 views
0

我想知道如何替換除特定選定字符之外的所有正則表達式匹配。替換除特定字符之外的所有正則表達式匹配

我需要清理數據。該數據的一個例子是

`some-really,dirty.data%#$_.` 

,我想看起來像

some-reallydirtydata_ 

somereally之間的-。這是我選擇的角色,我會不是喜歡刪除。

這裏是我的代碼片段:

import re 

unclean_string = "some-really,dirty.data%#$_." 
clean_string = re.sub('\W', '', unclean_string) 

print clean_string 
>>>"somereallydirtydata_" 

我知道\W刪除所有,但 「0〜9,A到Z,A到Z,並強調」。

我想知道我如何刪除所有這些,再加上一個選定的字符(如-)。

聲明:我提前道歉提出這樣一個基本問題。我是Python新手,使用正則表達式。

回答

2

您可以使用:

clean_string = re.sub(r'[^\w-]', '', unclean_string) 

​​是\W等同。所以,如果你在那裏添加一個-,你也不會匹配它。

注意:我還在上面生成了正則表達式字符串,因爲這是一個很好的做法。這可以防止您在轉義時可能出現的意外行爲。

0

包括連字符與正則表達式:

clean_string = re.sub('[^-\w]', '', unclean_string) 

解釋的正則表達式:

NODE      EXPLANATION 
-------------------------------------------------------------------------------- 
    [^-\w]     any character except: '-', word characters 
          (a-z, A-Z, 0-9, _) 
相關問題