我有一个像这样的字符串:
s = k0+k1+k1k2+k2k3+1+12
我想转换它,这样每个数字,在字母后面(k
这里)都被方括号括起来:
k[0]+k[1]+k[1]k[2]+k[2]k[3]+1+12
有什么好办法呢?
我尝试了什么:使用replace()
4次功能(但它不能处理数字后面没有字母).
这里有一个使用re
带有正则表达式的模块的选项([a-zA-Z])(\d+)
,它匹配单个字母后跟数字,并且sub
可以用替换中的一对括号括起匹配的数字:
import re s = "k0+k1+k1k2+k2k3+1+12" re.sub(r"([a-zA-Z])(\d+)", r"\1[\2]", s) # 'k[0]+k[1]+k[1]k[2]+k[2]k[3]+1+12'
要用大写替换匹配的字母,可以在替换位置使用lambda将它们转换为大写:
re.sub(r"([a-zA-Z])(\d+)", lambda p: "%s[%s]" % (p.groups(0)[0].upper(), p.groups(0)[1]), s) # 'K[0]+K[1]+K[1]K[2]+K[2]K[3]+1+12'