2013-07-12 25 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'