[英]Python regex: Reject one two-digit number and accept other two-digit numbers
[英]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 comprehension和ord() 函数,请仔细阅读。 附上链接。
您可能希望使用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.