在字符串中添加数字

Sim*_*eSi -1 python regex python-2.7

我喜欢在字符串中的任何数字序列周围添加[]

"pixel1blue pin10off output2high foo9182bar"
Run Code Online (Sandbox Code Playgroud)

应转换为

"pixel[1]blue pin[10]off output[2]high foo[9182]bar"
Run Code Online (Sandbox Code Playgroud)

我觉得必须有一个简单的方法,但它逃避我:(

Mar*_*ers 5

是的,有一种简单的方法,使用re.sub():

result = re.sub(r'(\d+)', r'[\1]', inputstring)
Run Code Online (Sandbox Code Playgroud)

这里\d匹配一个数字,\d+匹配1位或更多位数.在(...)围绕图案组比赛,所以我们可以参考它的第二个参数,替换模式.该模式只是替换[...]组周围的匹配数字.

请注意,我使用r'..'原始字符串文字; 如果你不这样做,你必须加倍所有的\反斜杠; 请参阅Python Regex HOWTO 的反斜杠瘟疫部分.

演示:

>>> import re
>>> inputstring = "pixel1blue pin10off output2high foo9182bar"
>>> re.sub(r'(\d+)', r'[\1]', inputstring)
'pixel[1]blue pin[10]off output[2]high foo[9182]bar'
Run Code Online (Sandbox Code Playgroud)