5

如果我有

char = 'a'

我怎样才能将值增加到'b'然后变成'c'等等..

我不想更换或更改它。它很像

char = char + 1
4

4 回答 4

10
>>> chr(ord('a') + 1)
'b'
于 2012-08-06T11:19:10.017 回答
8

您可以像这样进行增量翻译。在这种情况下,我已将“z”映射回“a”

>>> from string import maketrans, ascii_lowercase
>>> char_incrementer = maketrans(ascii_lowercase, ascii_lowercase[1:]+ascii_lowercase[0])
>>> 'a'.translate(char_incrementer)
'b'

您可以轻松地将其应用于整个字符串

>>> 'hello'.translate(char_incrementer)
'ifmmp'
于 2012-08-06T11:24:32.023 回答
4

像这样:

char = chr(ord(char) + 1)

或者可能更像是这样的pythonic:

from string import ascii_lowercase
char = ascii_lowercase[ascii_lowercase.index(char) + 1]

请注意,这两种方法在您达到z.

在不知道你将要使用它的情况下很难确定,但我会研究你是否可以以一种避免这个问题的方式做你正在做的任何事情。例如,如果您有这样的代码:

char = "a"
while True:
    if xxx():
        break
    if yyy():
        continue
    value = zzz()
    print char, value
    char = chr(ord(char) + 1)

改为这样做:

def find_values():
    while True:
        if xxx():
            break
        if yyy():
            continue
        yield zzz()

for char, value in zip(ascii_lowercase, find_values()):
    print char, value
于 2012-08-06T11:18:27.727 回答
1
>>> chr((ord('a')+1)%97%26 + 97)
'b'
>>> chr((ord('z')+1)%97%26 + 97)
'a'
于 2013-07-18T19:44:13.917 回答