我正在尝试解决一个问题,即在 string 的末尾添加 1。 这意味着:
1.abcd12会变成:abcd13
2.abcd099会变成abcd100
3.abcd01会变成abcd02
4.ddh^add@2204会变成ddh^add@2205
我的代码:
import re
def increment_string(strng):
regex = re.compile(r'[0-9]')
match = regex.findall(strng)
nums = ''.join(match[-3:])
add = int(nums)+1
print(strng+str(add))
increment_string("abcd99")
代码给我这个输出:abcd099100 我不知道如何解决它:
最佳答案
用 [0-9]+$
匹配字符串末尾的所有数字,并使用 re.sub
和一个可调用的替换参数:
import re
def increment_string(strng):
return re.sub(r'[0-9]+$', lambda x: f"{str(int(x.group())+1).zfill(len(x.group()))}", strng)
print(increment_string("abcd99"))
# => abcd100
print(increment_string("abcd099"))
# => abcd100
print(increment_string("abcd001"))
# => abcd002
参见 Python demo
关于python - 在字符串末尾增加一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64632623/