python中的自定义转换程序?

Joe*_*ith 2 python converter

我想做如下的事情:

h=@ , e=( , l=& , o=!
Run Code Online (Sandbox Code Playgroud)

因此,在上面的示例中,当您键入时hello,它会返回@(&&!,反之亦然.

(我会在Python中使用它,但它不一定是.)

我想做一个这样的小实用程序.有人可以帮忙吗?谢谢!

编辑: "基本上我希望能够为一些字母分配一个独特的字符.然后,当您运行该实用程序时,它会询问您的输入.然后您按任何顺序键入您想要的内容.使用上面的示例:"hello" ="@(&&!","elloh"="(&&!@","looleh"="&!!&(@"等等.)

unu*_*tbu 7

在Python2中,您可以使用str.translate:

import string
table = string.maketrans(
    'helo',
    '@(&!',)

In [17]: 'hello'.translate(table)
Out[17]: '@(&&!'

In [18]: 'looleh'.translate(table)
Out[18]: '&!!&(@'
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用unicode.translate:

In [19]: table = {ord(k):v for k, v in zip(u'helo', u'@(&!')}

In [20]: u'hello'.translate(table)
Out[20]: u'@(&&!'
Run Code Online (Sandbox Code Playgroud)

Lutz Horn的答案显示了如何构建一个可以执行前向和后向翻译的单个表.


在Python3中,string.maketrans 已被替换为bytes.maketrans:

>>> table = bytes.maketrans(b'helo', b'@(&!')
>>> b'hello'.translate(table)
b'@(&&!'

>>> 'hello'.translate({ord(k):v for k, v in zip('helo', '@(&!')})
'@(&&!'
Run Code Online (Sandbox Code Playgroud)