2013-07-12 144 views
-1

有人請解釋下面的代碼執行嗎? 我是Python的新手;我被困在're'和'sub'之間。Python re.sub()函數是如何工作的?

import re 

a = 'a..!b...c???d;;' 
chars = [',', '!', '.', ';', '?'] 

print re.sub('[%s]' % ''.join(chars), '', a) 
+0

什麼沒有你的代碼明白了嗎? –

+0

什麼*部分*你不明白嗎?你有沒有讀過['re' module](http://docs.python.org/2/library/re.html)文檔? –

+1

您可以隨時使用幫助(re.sub)。它會給你一個re.sub是什麼以及如何使用它的基本概要。 – iCodez

回答

4

該代碼應用圓整的方式來刪除標點符號。它可以被簡化爲:

re.sub('[,!.;?]', '', a) 

其中[....]是一個正則表達式字符類定義。它將匹配輸入文本中屬於該類成員的任何字符,因此任何逗號,感嘆號等都將匹配。

.sub()功能將取代任何與之相匹配的第二個參數,在這種情況下,空字符串,刪除所有命名的標點符號。

此功能更好地被str.translate() function,其第二個參數是一個字符序列從輸入文本刪除填寫。

a.translate(None, ',!.;?') 

演示:

>>> a = 'a..!b...c???d;;' 
>>> a.translate(None, ',!.;?') 
'abcd'