我喜欢在字符串中的任何数字序列周围添加[],例如
"pixel1blue pin10off output2high foo9182bar"
应转换为
"pixel[1]blue pin[10]off output[2]high foo[9182]bar"
我觉得必须采用一种简单的方法,但它要逃避我:(
答案 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/