迭代一个字符串中的最后一个数字

时间:2019-04-27 19:28:50

标签: python

我正在研究如何在python中以数字结尾加1的字符串递增。

例如:

myString = 'test01'

我想迭代'01'以获得'02'(即test02

我该如何处理其中包含多个数字的字符串?

myString = 'Test1b01'

我只想迭代最后一个数字以获得Test1b02

我认为它涉及到拆分字符串,但不知道如何仅迭代最后一位。

3 个答案:

答案 0 :(得分:4)

我想你的意思是“递增” (而不是“ iterate” )。
re.sub适用于扩展案例的解决方案:

import re

myString = 'Test1b01 text test2aa4 '
pat = r'\b(\w+)(\d)\b'
res = re.sub(pat, lambda m: m.group(1) + str(int(m.group(2))+1), myString)
print(res)

输出:

'Test1b02 text test2aa5 '

正则表达式模式详细信息:

  • \b-单词边界
  • \w+-一个或多个字母数字字符
  • \d-一位数字(单词结尾)

答案 1 :(得分:3)

拼接,整数转换,递增并返回字符串是一种方法,例如:

s = 'test12'
# s[:-2] means grab all but the last two characters
# The {:02d} means we want the int shown as two digits
# s[-2:] Means we want the last two characters
new_str = s[:-2] + "{:02d}".format(int(s[-2:]) + 1)
print(new_str)

输出:

test13

答案 2 :(得分:2)

根据您的问题,我认为数字始终是字符串的最后2个字符。然后,您将它们分开,并将它们转换为整数,对其进行消音处理,对其进行格式化,使其始终长两个字符(因此,将“ 02”而不是“ 2”),然后添加到不包含数字的零件中。

def increament(string):
    num = int(string[-2:])
    num += 1
    num = format(num, '02d')
    return string[:-2] + str(num)