Python 编程数字编码为字母

0 投票
2 回答
671 浏览
提问于 2025-04-18 04:40

我想写一段代码,让数字00对应字母a,01对应字母b,以此类推。比如说,调用这个函数str2numsp('I like Python.')时,它应该返回字符串'3452110810045241241907141353'。

2 个回答

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'

这个就像是

1

这些数字需要从 0 开始按顺序排列吗,还是你想用其他的数字?你可以用每个字符的unicode值,像这样:

ord("a") --> 97, ord("b") --> 98..等等

然后你可以这样说:

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(因为97是'a'的值),但要小心特殊字符(空格、标点符号等)。

撰写回答