【问题标题】:Removing substring from a string in python从python中的字符串中删除子字符串
【发布时间】:2018-09-24 22:29:16
【问题描述】:

我有一个类似这样的字符串:

OPEN BRANCH FROM BUS 264604 [19BVEO     345.00] TO BUS 
264888 [19LRTY     345.00] CKT 1

我想删除包含在“[”和“]”之间的子字符串。结果应该是这样的:

OPEN BRANCH FROM BUS 264604 TO BUS 264888 CKT 1

谢谢,

【问题讨论】:

    标签: python-2.7


    【解决方案1】:

    你可以使用split:

    s='OPEN BRANCH FROM BUS 264604 [19BVEO     345.00] TO BUS 264888 [19LRTY     345.00] CKT 1'
    
    pieces=[s.split(']')[-1] for s in s.split('[')]
    print(pieces)
    ['OPEN BRANCH FROM BUS 264604 ', ' TO BUS 264888 ', ' CKT 1']
    
    sentence=''.join(pieces)
    print(sentence)
    'OPEN BRANCH FROM BUS 264604  TO BUS 264888  CKT 1'
    

    【讨论】:

      【解决方案2】:

      Regex 是一种选择:

      import re
      
      str_in = 'PEN BRANCH FROM BUS 264604 [19BVEO     345.00] TO BUS 264888 [19LRTY     345.00] CKT 1'
      
      str_out = re.sub('\\[[^\\]]*\\]', '', str_in)
      

      str_out 打印为

      PEN BRANCH FROM BUS 264604  TO BUS 264888  CKT 1
      

      正则表达式模式来自 R 的 this post。它将匹配并用空字符串替换整个字符串 str_in 中方括号括起来的任何字符序列。

      您可能还想删除因删除括号文本而产生的额外空间。如果您注意到,移除后会留下两个空格,而不仅仅是一个。如果是这样的话,你可以在re.sub后面加上下面这行,

      str_out = (' ').join(str_out.split('  '))
      

      所以str_out 变成了,

      PEN BRANCH FROM BUS 264604 TO BUS 264888 CKT 1
      

      【讨论】:

        猜你喜欢
        • 2019-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多