37,719
社区成员
发帖
与我相关
我的任务
分享
import re
text = 'A100R200C555B555'
robj = re.compile(r'(?<=[AB])\d+')
found = []
beg = 0
end = len(text)
while beg < end:
mobj = robj.search(text, beg)
if not mobj:
break
beg = mobj.end()
found.append((mobj.start(), mobj.end()))
rep = text
for beg, end in found:
num = str(int(text[beg:end])+1).zfill(end-beg)
rep = rep[:beg] + num + rep[end:]
print found
print rep
>>> import re
>>> from string import Template
>>> STR='A100R200C555B555'
>>> h = STR[:-len(re.findall('[0-9]+',STR)[-1])]
>>> t = Template('%s$num'%h)
>>> t.substitute(num=(int(re.findall('[0-9]+',STR)[-1])+1).__str__())
'A100R200C555B556'
import re
a = 'AT005CC56'
reg = re.compile(r'AT(\d+?)[^\d]+?\d*')
match = reg.search(a)
if match is not None:
num = match.groups()[0]
format = 'AT%' + '0%dd' % len(num)
a = reg.sub(format % (int(num)+1), a)
print a
>>> STR
'AT005CC56'
>>> m = re.findall('[0-9]+',STR)
>>> m[0]=(int(m[0])+1).__str__().rjust(3, '0')
>>> s = re.sub(re.findall('[0-9]+',STR)[0], m[0], STR)
'AT006CC56'
import re
a = 'AT005CC56'
reg = re.compile(r'AT(\d+?)[^\d]+?.*')
match = reg.search(a)
if match is not None:
num = match.groups()[0]
format = '%' + '0%dd' % len(num)
a= a.replace(num, format % (int(num)+1))
print a