繁体   English   中英

Python将字母转换为两位数

[英]Python converting letter to two-digit number

这里的 Python 小菜鸟。 我正在做一个小的个人项目,我想转换一个简单的字符串

str='test"

到这样的事情:

['20', '05', '19', '20']

这将等于两位数的“测试”。 我找到了 'ord' 方法,但它似乎将数字转换为整数格式,并且只留下一位数字,而不必有两位数字。 但是,对于我的项目,我需要这两个数字而不是整数格式(它是一个 DTMF 消息编码器/解码器,适用于 01-99 范围的代码,相当于每个数字一个字母/符号)。

有什么帮助吗?

谢谢!

这里有一种方法可以做到这一点。

更新代码:

[f'{ord(i)-96:02d}' for i in 'test'.lower()]

之前的代码:

["{:02d}".format((ord(i)-96)) for i in 'test']

这将导致:

['20', '05', '19', '20']

上面的代码使用了.format选项、 list comprehensionord() 函数,请仔细阅读。 附上链接。

您可能希望使用zfill执行此zfill并从 ascii_lowercase 获取索引(如评论中所建议),尽管它有点混乱。 正如乔回答的那样,使用ord and string formatting执行此操作肯定是优雅的方式。

from string import ascii_lowercase as al
[str(al.index(x)+1).zfill(2) for x in "test"] # ['20', '05', '19', '20']

好吧,我们可以使用 dict 缓存来更快地查找,如下所示:

from string import ascii_lowercase as al
cache = {char: idx+1 for idx, char in enumerate(al)}
[str(cache[x]).zfill(2) for x in "test"] # ['20', '05', '19', '20']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM