在字符串中添加数字

时间:2015-09-19 08:05:51

标签: python regex python-2.7

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

"pixel1blue pin10off output2high foo9182bar"

应转换为

"pixel[1]blue pin[10]off output[2]high foo[9182]bar"

我觉得必须采用一种简单的方法,但它要逃避我:(

2 个答案:

答案 0 :(得分:5)

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

result = re.sub(r'(\d+)', r'[\1]', inputstring)

此处\d匹配一个数字,\d+匹配一个或多个数字。该模式周围的(...)对匹配进行分组,因此我们可以在第二个参数(替换模式)中引用它。该模式只是将匹配的数字替换为组周围的[...]

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

演示:

>>> 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'

答案 1 :(得分:2)

您可以使用re.sub

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

此处(\d+)将匹配任何数字组合,re.sub函数会将其替换为括号r'[\1]'中的第一个组匹配。

您可以从这里开始学习正则表达式http://www.regular-expressions.info/