我正在研究如何在python中以数字结尾加1的字符串递增。
例如:
myString = 'test01'
我想迭代'01'
以获得'02'
(即test02
)
我该如何处理其中包含多个数字的字符串?
myString = 'Test1b01'
我只想迭代最后一个数字以获得Test1b02
我认为它涉及到拆分字符串,但不知道如何仅迭代最后一位。
答案 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)