获取字母在字母表中的位置

73 投票
7 回答
159091 浏览
提问于 2025-04-16 17:13

我90%确定有一个内置的函数可以做到这一点。

我需要找到一个字母在字母表中的位置。比如字母“b”的位置是1(从0开始算),其他字母也是这样。有没有人知道这个函数叫什么?

我想做的是把所有字母向字母表的前面移动X步,比如如果我有一个字符串“hi”,向前移动一步后就变成“gh”。可能还有更好的方法来实现这个,有什么建议吗?

7 个回答

4

你可以使用 ord() 来获取一个字符在ASCII表中的位置,而用 chr() 可以把一个ASCII位置转换成对应的字符。

举个例子:

my_string  = "zebra"
difference = -1
new_string = ''.join((chr(97+(ord(letter)-97+difference) % 26) for letter in my_string))

这个代码会生成一个字符串,其中所有的字符都向后退了一个字母位置(变成'ydaqz')。这个方法只适用于小写字母。比如,字母'a'退一步变成'z',而字母'z'再进一步就变成'a'。

52

没有导入

def char_position(letter):
    return ord(letter) - 97

def pos_to_char(pos):
    return chr(pos + 97)
115

这个东西叫做 index。举个例子:

>>> import string
>>> string.ascii_lowercase.index('b')
1
>>> 

注意:在 Python 2 里,string.ascii_lowercase 被叫做 string.lowercase

撰写回答