Python编程将数字编码为字母

时间:2014-04-28 23:31:49

标签: python

我正在尝试创建一个代码,使00 = a 01 = b等等,例如,str2numsp('我喜欢Python。')应该返回字符串 '3452110810045241241907141353'。

2 个答案:

答案 0 :(得分:1)

他们必须从0开始,还是只想使用任何数字?您可以使用每个字符的unicode值,如下所示:

  

ord(“a”) - > 97,ord(“b) - > 98 .. etc

然后你可以说

myString = "I like Python"

并使用列表理解

[ord(i) for i in myString]

哪个输出

[73, 32, 108, 105, 107, 101, 32, 80, 121, 116, 104, 111, 110]

然后将它们连接为字符串

"".join([str(ord(i)) for i in myString])

返回最终输出

'73321081051071013280121116104111110'

如果你希望'a'从零开始,你总是可以从每个ord()中减去97(这是'a'),但你必须小心特殊字符(空格,标点符号等) )。

答案 1 :(得分:0)

import string

chars = string.ascii_lowercase + string.ascii_uppercase + " ."
encode = {ch:"{:02d}".format(i) for i,ch in enumerate(chars)}

def str2numsp(s):
    return "".join(encode[ch] for ch in s)

就像

一样
>>> str2numsp("I like Python.")
'3452110810045241241907141353'