python - 用括号中的数字Python替换字符串中的数字

标签 python string replace

我有这样一个字符串:

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'

关于python - 用括号中的数字Python替换字符串中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41781427/

相关文章:

python - 删除 aws beanstalk 上的 uuid python 包

ios - 将 Swift 字符串转换为数组

java - 如何只替换标记,没有子字符串?

将字符串与c中的多个数组进行比较

python - 比 re.sub 更快(更 Pythonic)的解决方案?删除前缀(由许多相同的字符组成)

javascript - JS : Adding a space between Japanese character phrase and number using regex

python - Seaborn 图 - X 轴上的错误日期

python - 如何制定 Xpath 表达式以从子节点获取属性?

Python 的 argv 和 bash?

c# - PredicateBuilder:OR 条件嵌套在 .And() 中