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