我正在尝试在 python 3.3.3 中创建一个程序,它将一个字符串然后将其转换为数字 (1-26)
我知道如何计算一位数但不知道 2 位
translist = str.maketrans("123456789", "ABCDEFGHI")
有没有办法做到这一点
最佳答案
你不能用 str.translate()
做你想做的事;仅适用于一对一的替换。您正试图在此处用两个不同的字符替换一个字符。
您可以改用正则表达式:
re.sub('[A-Z]', lambda m: str(ord(m.group()) - 64), inputstring)
这采用每个字母的 ASCII 代码点并减去 64(A
在 ASCII 标准中为 65)。
请注意,这可能会导致一些令人困惑的模棱两可的解释:
>>> import re
>>> inputstring = 'FOO BAR BAZ'
>>> re.sub('[A-Z]', lambda m: str(ord(m.group()) - 64), inputstring)
'61515 2118 2126'
第一组数字是 6 1 5 1 5
还是 6 15 15
?您可能想要用 0 填充您的数字:
re.sub('[A-Z]', lambda m: format(ord(m.group()) - 64, '02d'), inputstring)
产生:
>>> re.sub('[A-Z]', lambda m: format(ord(m.group()) - 64, '02d'), inputstring)
'061515 020118 020126'
关于Python翻译多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25202007/