问题已解决,我错误地理解了捕获的概念,代码改成如下形式则得到预期结果:
>>> def mark(mo):
print(mo.group(1))
return mo.group(1)
>>> re.sub(r'@(yangxg|zengshao|zmrenwu)', mark, '@yangxg @zengshao @zmrenwu')
>>> def mark(mo):
print(mo.group(1))
return mo.group(1)
>>> re.sub(r'@(yangxg)|@(zengshao)|@(zmrenwu)', mark, '@yangxg @zengshao @zmrenwu')
yangxg
None
None
可见第二次和第三次替换时 mo.group(1) 为 None 了,但我在正则表达式中指定了捕获组的,而且第一次捕获正常,是什么原因?
原本的的意图去掉每个用户名前的 @ 符号,期望的输出应该是:yangxg zengshao zmrenwu
4 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
import re
data = re.sub(r'@(\w+)', '\\1','@yangxg @zengshao @zmrenwu')
print data
添加回答
举报
0/150
提交
取消