zoukankan      html  css  js  c++  java
  • python去掉括号之间的字符

    在字符串中识别括号并删除括号及其中的内容
    括号包括 大中小 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表示就可以

  • 相关阅读:
    [COCI2013]DLAKAVAC
    [TJOI2013]最长上升子序列
    AGC040E Prefix Suffix Addition
    AGC010E Rearranging
    AGC021F Trinity
    AGC002F Leftmost Ball
    JOISC2019D ふたつのアンテナ
    LOJ6210 「美团 CodeM 决赛」tree
    Luogu P3781 [SDOI2017]切树游戏
    Problem. M
  • 原文地址:https://www.cnblogs.com/lzhc/p/8744299.html
Copyright © 2011-2022 走看看