"Increment numbers in a string"

20 October 2005   2 comments   Python


Mind That Age!

This blog post is 13 years old! Most likely, its content is outdated. Especially if it's technical.

Powered by Fusion×

I've just uploaded my second Python Cookbook recipe. It's unfortunately not rocket science but it's application is potentially very useful. With this little function you can generate the next number in a string that contains at least one number.

The mini unittest is quite interesting perhaps:

$ python increment_strings.py
from 10dsc_0010.jpg to 10dsc_0011.jpg
from dsc_9.jpg to dsc_10.jpg
from 0000001.exe to 0000002.exe
from ref-04851 to ref-04852


Looks to big for me... this will also work

import re
def increment(s):
....re.sub(r'\d+(?=[^\d]*$)', lambda m: str(int(m.group())+1).zfill(len(m.group())), s)

It's also faster. If you think it's too complex you can break it up.
slightly more readable version:

last_number = re.compile(r'\d+(?=[^\d]*$)')

def increment(string):
....def increment_number(match):
........num_str = match.group(1)
........str( int(num_str) + 1).zfill( len(num_str) )

....return last_number.sub(increment_number, string)
Thank you for posting a comment

Your email will never ever be published

Related posts

Playing with Reverend Bayesian 19 October 2005
Pandora - a great Internet radio 21 October 2005
Related by Keyword:
Python Cookbook arrived 05 April 2005
Indent text like email clients do 11 November 2004
PLEAC 31 October 2003
Related by Text:
Time to do concurrent CPU bound work 13 May 2016
Examples of mozjpeg savings 01 September 2015
vipsthumbnail 08 December 2014
Decorated Concurrency - Python multiprocessing made really really easy 13 May 2016
Sorting mixed type lists in Python 3 18 January 2014