在字符串中识别括号并删除括号及其中的内容
括号包括 大中小 3种括号
输入为 1个字符串 s="我是一个人(中国人)[真的]{确定}";
输出为 result = "我是一个人"
1.若括号为半角括号
常见的英文(半角)符号如( ) 直接用正则匹配即可
s="我是一个人(中国人)aaa[真的]bbbb{确定}" a = re.sub(u"\(.*?\)|\{.*?}|\[.*?]", "", s) print a
2.若括号为全角括号
全角字符(中文括号、标点),直接用正则匹配会存在问题:
因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果
若用decode转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到
import sys reload(sys) sys.setdefaultencoding('utf8') import re s = u"我是一个人(中国人)aaa[真的]bbbb{确定}【ys】21" a = re.sub(u"\(.*?)|\{.*?}|\[.*?]|\【.*?】", "", s.decode()) print a
这种方法本质上就是将正则的pattern字符和目标的编码对应, 所以将正则的字符串也用unicode表示就可以