I've searched on how to do this in python and I can't find an answer. If you have a string:
>>> value = 'abc'
How would you increment all characters in a string by 1? So the input that I'm looking for is:
>>> value = 'bcd'
I know I can do it with one character using ord and chr:
>>> value = 'a'
>>> print (chr(ord(value)+1))
>>> b
But ord()
and chr()
can only take one character. If I used the same statement above with a string of more than one character. I would get the error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 3 found
Is there a way to do this?
You could use a generator expression with
''.join()
as follows:The generator iterates over each
letter
in the stringvalue
and increments it by one using thechr(ord(letter)+1)
methodology suggested in your question. It then uses''.join()
to convert the letters in the generator back into a string.As gtllambert beat me to my original answer, I am posting an alternative solution. You can also use
map
and a lambda expression to achieve the same. The lambda expression useschr
andord
to increment each character by one andchr
is used to convert it back to a character.Here is what I came up with can't believe it actually worked thanks for the challenge using python 3
Very simple four line piece of code:
It goes through each letter in the string and adds one to it, but this doesn't work with "z", so you could do: