私はこの機能を頻繁に必要とするプロジェクトに取り組んでいます
'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 は厳密に型指定されており、検討対象の文字列と int は異なり、暗黙的に相互に変換されません。
ただし、コードはおそらく次のように簡略化できます
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