xxx*_*--- 4 python string replace
我有一个像这样的字符串:
s = k0+k1+k1k2+k2k3+1+12
Run Code Online (Sandbox Code Playgroud)
我想转换它,这样每个数字,在字母后面(k这里)都被方括号括起来:
k[0]+k[1]+k[1]k[2]+k[2]k[3]+1+12
Run Code Online (Sandbox Code Playgroud)
有什么好办法呢?
我尝试了什么:使用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'
Run Code Online (Sandbox Code Playgroud)
要用大写替换匹配的字母,可以在替换位置使用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'
Run Code Online (Sandbox Code Playgroud)