首页 > 解决方案 > 查找符号的小写(未移位)形式

问题描述

x = "Foo 890 bar *()"

我怎样才能让小写字母,包括"*()"“未移位”回到890?期望的结果:

foo 890 bar 890

不需要的:

x.lower() => "foo 890 bar *()"

标签: pythonstring

解决方案


不移位取决于键盘布局。这不是通用映射。你可以硬编码一个。

unshift = {
    '!': '1', '@': '2', '#': '3', '$': '4', '%': '5',
    '^': '6', '&': '7', '*': '8', '(': '9', ')': '0',
}

x = ''.join(unshift.get(c, c.lower()) for c in x)

编写该映射的另一种更紧凑的方法是:

unshift = dict(zip('!@#$%^&*()', '1234567890'))

推荐阅读