
Do you train Kung Fu?
Or know someone who does?
Then check out KungFuPeople.com
Mobile version of this page
Previous:
Playing with Reverend Bayesian
Next:
Pandora - a great Internet radio
Python Cookbook arrived
Indent text like email clients do
Playing with Reverend Bayesian
Next:
Pandora - a great Internet radio
Related blogs
PLEACPython Cookbook arrived
Indent text like email clients do
Related by category
"Increment numbers in a string"
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442460increment, aspn cookbook, aspn, python cookbook, cookbook, increment_strings
20th of October 2005
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
Comment
oneliner -
20th October 2005
[«« Reply to this]
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)
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)


Save this page in del.icio.us
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.