-1

有人可以解释以下代码执行吗?我是 Python 新手;我被困在“re”和“sub”之间。

import re

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

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

1 回答 1

4

该代码采用一种迂回的方式来删除标点符号。可以简化为:

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

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

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

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

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

演示:

>>> a = 'a..!b...c???d;;'
>>> a.translate(None, ',!.;?')
'abcd'
于 2013-07-12T17:12:41.413 回答