Python 编程数字编码为字母
我想写一段代码,让数字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'的值),但要小心特殊字符(空格、标点符号等)。