我正在做一个项目,经常需要这个功能
'b' + 1 #=> 'a' and 'b' - 1 #=> 'a'
现在我的解决方案非常乏味:
str(unichr((ord('b')+ 1)))
有没有更优雅的方法来做到这一点?
str(unichr(c))
可以替换为chr(c)
.
简化版:
chr(ord('b') + 1)
定义自己的功能:
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'
Python 是强类型的,考虑字符串和整数是不同的,并且不会隐式地将一个转换为另一个。
但是,您的代码可能可以简化为
chr(ord('b') + 1)
如果你经常使用它,把它放在一个函数中,不要再担心它了:
def incr_char(c, n):
return chr(ord(c) + n)
试试这个:
>>> import string
>>> string.letters[string.letters.index('a')+1]
'b'
只为阿什维尼:
>>> string.letters[string.letters.index('a')-1]
'Z'
您可以执行以下操作:
class char(unicode):
def __add__(self, x):
return char(unichr(ord(self) + x))
print char('a') + 1 # b