我正在研究一个非常经常需要此功能的项目
'b' + 1 #=> 'a' and 'b' - 1 #=> 'a'
现在我的解决方案非常乏味:
str(unichr((ord('b')+ 1)))
有更优雅的方法吗?
答案 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