在字符串中查找模式并将其替换为简单形式

Find patterns in a string and replace it with simple form

我有一个字符串

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

乍一看好像挺简单的,但是想不通。

使用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':', 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

你可以用 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':', 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