4

私はこの機能を頻繁に必要とするプロジェクトに取り組んでいます

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

今、私の解決策は非常に面倒です:

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

これを行うよりエレガントな方法はありますか?

4

5 に答える 5

5

str(unichr(c))だけで置き換えることができますchr(c)

簡易版:

chr(ord('b') + 1)
于 2012-10-09T09:40:28.733 に答える
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'
于 2012-10-09T09:41:13.303 に答える
1

Python は厳密に型指定されており、検討対象の文字列と int は異なり、暗黙的に相互に変換されません。

ただし、コードはおそらく次のように簡略化できます

chr(ord('b') + 1)

頻繁に使用する場合は、関数に入れてください。もう心配する必要はありません。

def incr_char(c, n):
    return chr(ord(c) + n)
于 2012-10-09T09:41:43.670 に答える
0

代わりにこれを試してください:

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

アシュウィニのためだけに:

>>> string.letters[string.letters.index('a')-1]
'Z'
于 2012-10-09T09:42:05.970 に答える
0

次のようなことができます:

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

print char('a') + 1 # b
于 2012-10-09T09:43:15.750 に答える