Python re.sub()函数如何工作?

时间:2013-07-12 17:05:45

标签: python join module replace

有人请说明以下代码执行吗? 我是Python的新手;我被困在're'和'sub'之间。

import re

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

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

1 个答案:

答案 0 :(得分:4)

代码采用循环方式删除标点符号。它可以简化为:

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

其中[....]是正则表达式字符类定义。它将匹配输入文本中属于该类成员的任何字符,因此任何逗号,感叹号等都将匹配。

.sub()函数将替换第二个参数的所有匹配项,在本例中为空字符串,删除所有命名的标点符号。

str.translate() function更好地填充了这个函数,它的第二个参数是要从输入文本中删除的字符序列。

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

演示:

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