有人请说明以下代码执行吗? 我是Python的新手;我被困在're'和'sub'之间。
import re
a = 'a..!b...c???d;;'
chars = [',', '!', '.', ';', '?']
print re.sub('[%s]' % ''.join(chars), '', a)
答案 0 :(得分:4)
代码采用循环方式删除标点符号。它可以简化为:
re.sub('[,!.;?]', '', a)
其中[....]
是正则表达式字符类定义。它将匹配输入文本中属于该类成员的任何字符,因此任何逗号,感叹号等都将匹配。
.sub()
函数将替换第二个参数的所有匹配项,在本例中为空字符串,删除所有命名的标点符号。
str.translate()
function更好地填充了这个函数,它的第二个参数是要从输入文本中删除的字符序列。
a.translate(None, ',!.;?')
演示:
>>> a = 'a..!b...c???d;;'
>>> a.translate(None, ',!.;?')
'abcd'