获取字母在字母表中的位置
我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
。