问题
python中字符创替换操作通常使用replace
函数,如果要批量将一些字符都进行统一替换呢,比如将标点符号都替换为PUNCT,此时大家会想到用正则表达式中的re.sub
函数,更进一步,如果在替换时要求保留标点符号并在其两侧加上空格呢?泛化地说就是要求不删除被替换对象,而是在被替换对象本身进行一些修改,此时就需要在替换值参数中引用被替换对象,这就要用到pattern引用了,这么说太抽象,下面举例说明。
解决方法
使用正则表达式的向后引用功能即可,示例如下:
import re
re.sub(r'[_<>,\(\)\.\'%]', ' \g<0> ', '5% percent')
Out[9]: '5 % percent'
上述代码在一些特殊符号的两侧分别加空格,向后引用\g<0>
把 pattern 作为一整个组进行引用。
参考资料:
https://docs.python.org/zh-cn/3/library/re.html#re.sub