2013-03-04 146 views
1

如何從正則表達式中排除空格,但不會忽略特殊字符。我目前的代碼是: -Python:從正則表達式中排除空格

pattern=re.compile("[^\w]") 
var = pattern.sub('', var) 

我知道\ w將刪除所有空白字符,但如何排除空間只?

例子:

var = "hi this is [email protected]#$%%^^" 

正則表達式後,它將成爲:

var = "hi this is test" 
+0

什麼是你想剝離的字符? – 2013-03-04 04:37:25

+1

我不完全確定你要做什麼,但'\ w'匹配單詞字符。 – murgatroid99 2013-03-04 04:37:36

+0

即時消息試圖刪除!@#$ %% ^&等,而不傷害空間 – Natsume 2013-03-04 04:39:57

回答

3
[^a-zA-Z\d\s] 

刪除所有內容,留下字母,數字和空格。

+0

輝煌,謝謝! +1對你來說 – Natsume 2013-03-04 04:55:45

+1

@Natsume''\ s''不僅意味着空白,而且也意味着所有字符'''\ f \ r \ n \ t \ v \ x''',所以如果你從替換中排除它們,他們仍然在字符串中。這是你想要的嗎? – eyquem 2013-03-04 05:31:20

+0

@夏目 - 是不是'[^ \ w]'(注意w之後的空格)更簡潔地完成這個?除非@eyquem提及的所有其他空白字符也是有效的,否則空間是唯一缺少的東西。 – 2013-05-03 13:30:07

0

爲什麼不re.compile('\s')

+0

nah它將刪除所有內容,從var =「this is test!@#」到var =「」 – Natsume 2013-03-04 04:41:46

+0

@Natsume it *不*?讓我看看你的代碼 – 2013-03-04 04:51:25

+0

看起來好像所有這些都會消除空白,這與夏目漱石所要求的完全相反。如果他用空字符串替換所有空格字符,則會留下所有要刪除的特殊字符,並刪除所有想保留的空格。 – 2013-05-03 13:35:58

0

如果我正確地理解你,你想刪除所有字符而不是單詞字符或將它們分開的空格。如果這是正確的,那麼它看起來像下面會做的伎倆:

var = "hi this is [email protected]#$%%^^" 
pattern=re.compile("[^\w ]") 
var = pattern.sub('', var) 

這裏唯一的變化是,我已經在方括號內^\w後添加一個空格。當我運行這個,我得到以下結果:

>>> print var 
hi this is test