我喜欢在一个字符串如增加[]周围的任意序列添加[]围绕数字字符串中
"pixel1blue pin10off output2high foo9182bar"
应该转换为
"pixel[1]blue pin[10]off output[2]high foo[9182]bar"
我觉得必须有一个简单的方法但它躲避我:(
我喜欢在一个字符串如增加[]周围的任意序列添加[]围绕数字字符串中
"pixel1blue pin10off output2high foo9182bar"
应该转换为
"pixel[1]blue pin[10]off output[2]high foo[9182]bar"
我觉得必须有一个简单的方法但它躲避我:(
是的,有一个简单的方法,使用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'
您可以使用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/
很大,但为什么这不会产生” ......引脚[1] [0]关富...... [9] [1] [8] [2 ]酒吧”? – SimpleSi
@SimpleSi:因为'\ d +'尽可能匹配尽可能多的数字;这被称为*贪婪*匹配。如果你使用'\ d +?',它会匹配尽可能少,或*非贪婪*匹配。 –
@SimpleSi:参见http://www.regular-expressions.info/repeat.html –