我该怎么做'a'+ 1#=>在Python中'b'?

时间:2012-10-09 09:38:32

标签: python string

我正在研究一个非常经常需要此功能的项目

'b' + 1 #=> 'a' and 'b' - 1 #=> 'a'

现在我的解决方案非常乏味:

str(unichr((ord('b')+ 1))) 

有更优雅的方法吗?

5 个答案:

答案 0 :(得分:5)

定义你自己的功能:

In [103]: def func(c,n):
    return chr(ord(c)+n)
   .....: 

In [105]: func('a',-1)
Out[105]: '`'

In [106]: func('b',-1)
Out[106]: 'a'

In [107]: func('c',2)
Out[107]: 'e'

答案 1 :(得分:4)

str(unichr(c))只能替换为chr(c)

简化版:

chr(ord('b') + 1)

答案 2 :(得分:1)

Python是强类型的,因为字符串和整数是不同的,并且不会隐式地将它们转换为另一个。

但是,您的代码可能会简化为

chr(ord('b') + 1)

如果你经常使用它,把它放在一个函数中,不再担心它了:

def incr_char(c, n):
    return chr(ord(c) + n)

答案 3 :(得分:0)

请改为尝试:

>>> import string
>>> string.letters[string.letters.index('a')+1]
'b'

仅为Ashwini:

>>> string.letters[string.letters.index('a')-1]
'Z'

答案 4 :(得分:0)

您可以执行以下操作:

class char(unicode):
    def __add__(self, x):
        return char(unichr(ord(self) + x))

print char('a') + 1 # b