Find Number In String, Add 1 And Replace
I need to write a code where a string contains a number, then this number is incremented by 1, and then printed out within the initial string input. It should work like this >&
Solution 1:
You can use re.sub
here
>>>import re>>>s = 'I have 366 friends on facebook'>>>defaddone(obj):... val = int(obj.group(1))...returnstr(val+1)...>>>i = raw_input('what number would you like to increment?')
what number would you like to increment?6
>>>re.sub('({})'.format(i),addone,s)
'I have 377 friends on facebook'
Another Example
>>>s = 'I slept 3 hours'>>>i = raw_input('what number would you like to increment?')
what number would you like to increment?3
>>>re.sub('({})'.format(i),addone,s)
'I slept 4 hours'
And you can define your function like
defaddNumber(s):
defaddone(obj):
val = int(obj.group(1))
returnstr(val+1)
i = raw_input('what number would you like to increment?')
return(re.sub('({})'.format(i),addone,s))
However I advice that you have a validation function
i = raw_input('what number would you like to increment?')
if0<int(i)<9:
return(re.sub('({})'.format(i),addone,s))
else:
return"Number out of range"
This will prevent the user from entering values outside your range
Solution 2:
Possible error in your code is:
- you are trying to replace with
int
type data in thestring
directly. - Also only checking
numbers.isdigit()
will modify all numbers irrespective of what you specified to modify.
Possible corrections to your code to make it run properly:
def incrementNumbers(statement):
number1 = int(input('What number would you like to increment?'))
number2 = number1 +1
i=[]
for numbers in statement:
if numbers.isdigit() and int(numbers) == number1:
i.append(numbers)
statement.replace(numbers,str(number2))
You can also change your incrementNumbers(statement)
function to:
defincrementNumbers(statement):
number1 = input('What number would you like to increment?')
number2 = str(int(number1)+1)
statement = statement.replace(number1,number2)
return statement
which I think is better than to use a for
loop.
Solution 3:
Under your requirements that the numeric value must be between 0 and 8, you can use string.replace
defincrement(s, inc):
return s.replace(str(inc), str(inc + 1))
>>> s = 'I have 366 friends on facebook'>>> inc = 6>>> increment(s, 6)
'I have 377 friends on facebook'
Post a Comment for "Find Number In String, Add 1 And Replace"