我90%确定有内置功能可以做到这一点。
我需要找到字母中字符的位置。所以字符“b”是位置1(从0开始计数),等等。有人知道函数被调用了什么吗?
提前致谢!
编辑:我想要做的是在alpha赌注中发送所有字符X“步数”,所以如果我有一个字符串“hi”,如果我发送它将是“gh”退一步。可能有更好的方法,任何提示?
答案 0 :(得分:53)
它被称为index
。例如,
>>> import string
>>> string.lowercase.index('b')
1
>>>
注意:在Python 3中,string.lowercase
已重命名为string.ascii_lowercase
。
答案 1 :(得分:20)
没有导入
def char_position(letter):
return ord(letter) - 97
def pos_to_char(pos):
return chr(pos + 97)
答案 2 :(得分:2)
您可以使用ord()来获取角色的ASCII位置,使用chr()将ASCII位置转换为角色。
编辑:更新以包装字母表,以便a-1映射到z,z + 1映射到
例如:
my_string = "zebra"
difference = -1
new_string = ''.join((chr(97+(ord(letter)-97+difference) % 26) for letter in my_string))
这将创建一个字符串,其中所有字符在字母表中向后移动一个空格('ydaqz')。它只适用于小写单词。
答案 3 :(得分:0)
# define an alphabet
alfa = "abcdefghijklmnopqrstuvwxyz"
# define reverse lookup dict
rdict = dict([ (x[1],x[0]) for x in enumerate(alfa) ])
print alfa[1] # should print b
print rdict["b"] # should print 1
rdict是一个字典,通过逐步执行字母创建,一次一个字符。枚举函数返回带有列表索引和字符的元组。我们通过使用以下代码创建一个新元组来反转顺序:( x[1], x[0])
然后将元组列表转换为字典。由于字典是哈希表(键,值)数据结构,我们现在可以查找任何字母字符的索引。
但是,这不是你想要解决的问题,如果这是一个课程作业,如果你提交它,你可能会得到0抄袭。对于字符串的编码,首先创建一个组织的SECOND字母表,以便alfa2 [n]是alfa [n]的编码形式。在您的示例中,第二个字母表只会移动两个字符,但您也可以随机地随机播放字符或使用其他模式对它们进行排序。所有这些都将继续与其他字母表一起使用,如希腊语,西里尔语等。
答案 4 :(得分:0)
我刚刚开始学习Python,所以我不知道这与其他方法相比有多高效,但它有效。此外,文本是大写,小写还是有标点符号等都无关紧要。
如果您想更改所有字母:
from string import maketrans
textin = "abcdefghijklmnopqrstuvwxyz"
textout = "cdefghijklmnopqrstuvwxyzab"
texttrans = maketrans(textin, textout)
text = "qcc, gr umpiq"
print text.translate(texttrans)
还可以更改一些字符:
from string import maketrans
textin = "81972"
textout = "Seios"
texttrans = maketrans(textin, textout)
text = "811, 9t w7rk2"
print text.translate(texttrans)
答案 5 :(得分:0)
这是一种可能对某人有用的全部方法...
def alphabet(arg, return_lower=True):
"""
Indexing the english alphabet consisting of 26 letters.
Note: zero indexed
example usage:
alphabet('a')
>> 0
alphabet(25, return_lower=False)
>> 'Z'
:param arg: Either type int or type chr specifying the \
index of desired letter or ther letter at \
the desired index respectivley.
:param return_lower: If index is passes, returns letter \
with corresponding case. Default is \
set to True (lower case returned).
:returns: integer representing index of passed character \
or character at passed index.
"""
arg = str(arg)
assert arg.isdigit() or arg.isalpha()
if arg.isdigit():
if return_lower:
return chr(int(arg) + 97).lower()
return chr(int(arg) + 97).upper()
return ord(arg.lower()) - 97