【问题标题】:Find patterns in a string and replace it with simple form在字符串中查找模式并将其替换为简单形式
【发布时间】:2021-10-07 15:33:18
【问题描述】:

我有一个字符串

str1 = (((un5:0,(un7:0,un8:0):15:0):9,(un4:0,un10:0):10:0):5,((un6:0,un1:0):10:0,(un3:0,un9:0,un2:0):14:0):12:0):7):0

在字符串中,有特定的模式 ":number:number" ( ex) :15:0, :10:0 )

我想让它们变成这样

:15:0 -> :15

:10:0 -> :10
.
.
.

所以最终输出将是

str1 = (((un5:0,(un7:0,un8:0):15):9,(un4:0,un10:0):10):5,((un6:0,un1:0):10,(un3:0,un9:0,un2:0):14):12):7):0

起初看起来很简单,但我想不通。

【问题讨论】:

    标签: python string parsing pattern-matching


    【解决方案1】:

    您可以通过 re.sub() 做到这一点。

    import re
    
    s = '(((un5:0,(un7:0,un8:0):15:0):9,(un4:0,un10:0):10:0):5,((un6:0,un1:0):10:0,(un3:0,un9:0,un2:0):14:0):12:0):7):0'
    new_s = re.sub(r':((\d+):0)',r':\2', s)
    print(new_s)
    
    (((un5:0,(un7:0,un8:0):15):9,(un4:0,un10:0):10):5,((un6:0,un1:0):10,(un3:0,un9:0,un2:0):14):12):7):0
    

    【讨论】:

      【解决方案2】:

      使用re.sub我们可以试试:

      str1 = "(((un5:0,(un7:0,un8:0):15:0):9,(un4:0,un10:0):10:0):5,((un6:0,un1:0):10:0,(un3:0,un9:0,un2:0):14:0):12:0):7):0"
      output = re.sub(r':(\d+):\d+', r':\1', str1)
      print(output)
      

      打印出来:

      (((un5:0,(un7:0,un8:0):15):9,(un4:0,un10:0):10):5,((un6:0,un1:0) :10,(un3:0,un9:0,un2:0):14):12):7):0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 2016-07-04
        • 2011-11-16
        • 2023-03-30
        • 1970-01-01
        • 2019-11-28
        相关资源
        最近更新 更多