On Wed, Feb 5, 2014 at 7:47 AM, David Palao <[email protected]> wrote: > Sorry, there is a typo: > "(num+a,)" should be "(num+1,)", obviously. > > 2014-02-05 David Palao <[email protected]>: >> Hi, >> Is it not clear to me if you must distinguish ints from other type of >> numbers, or if, for instances floats and ints must be dealt >> differently. >> Anyway, I would propose something like the following function: >> >> def FindNumbers(a_string): >> print "You entered:", a_string >> out_list = [] >> for item in a_string.split(): >> try: >> num = int(item) >> except ValueError: >> out_list.append(item) >> else: >> out_list.append("%s" % (num+a,)) >> out_string = ' '.join(out_list) >> # do whatever you want to do with the resulting out_string: >> return it, or display it...
hi, I thought it might be interesting to make this work for cases where the numbers are not necessarily "word-separated" i.e., something like '12this is a rather odd string,3 I know 32. ' with regular expressions, I managed this: >>> import re >>> st = '12this is a rather odd string,3 I know 32. ' >>> pattern = r'(\d+|\D+)' # any digit one or more times OR any non-digit one >>> or more times >>> re.findall(pattern,st) ['12', 'this is a rather odd string,', '3', ' I know ', '32', '. '] which allows me to increment each integer and reconstruct the string, just iterating through the list. now, I would like to construct a pattern such that this next alternative usage works (my intention is to embed the 'findall' logic in the pattern itself): >>>re.search(pattern,st).groups() returning a tuple instead of a list, but with the same elements as before. I've been trying for a while and can't find a way to make it work. Does anyone know if this is possible? thank you _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor
