5

如果我有 list='abcdedcba'

我想要:a=z, b=y, c=x, d=w, e=v 所以它会转化为:

翻译='zyxwvwxya'

我该怎么做?如果我构建一个字典

>>> d=dict(zip(('a','b','c','d','e'),('z','y','x','w','v')))

并输入

>>> example= d[x] for x in list
>>> print translate
['z', 'y', 'x', 'w', 'v', 'w', 'x', 'y', 'z']

我如何将其恢复到表单中

翻译='zyxwvwxyz'

?

4

6 回答 6

12
the_list = ['z', 'y', 'x', 'w', 'v', 'w', 'x', 'y', 'z']
print "".join(the_list)
于 2011-04-20T05:24:37.487 回答
5

对于单字母替换,请使用maketrans并从 string 模块进行翻译。它们的操作类似于 unix tr命令。加入空分隔符是最后一步的正确答案,但对于这个确切的任务不是必需的。

于 2011-04-20T05:43:20.497 回答
2
''.join(translate)

我不确定这是你想要的吗?

于 2011-04-20T05:25:07.323 回答
2

使用 maketrans 和 translate 的示例:

>>> import string
>>> table = string.maketrans('abcdef', 'zyxwvu')
>>> 'abdedddfdffdabe'.translate(table)
'zywvwwwuwuuwzyv'

假设您要替换 ASCII 字母表中的所有字母:

import string
reversed_ascii_letters = string.ascii_letters[::-1]
# reorder lowercase and uppercase
reversed_ascii_letters = reversed_ascii_letters[26:] + reversed_ascii_letters[:26]
table = string.maketrans(string.ascii_letters, reversed_ascii_letters)
data = 'The Quick Brown Fox Jumped Over the Lazy Dog'
print data.translate(table)
于 2011-04-20T06:00:00.787 回答
1
>>> import string
>>> table = string.maketrans(string.lowercase, string.lowercase[::-1])
>>> 'abcdedcba'.translate(table)
'zyxwvwxyz'
于 2011-04-20T06:31:07.707 回答
0
>>> import string
>>> letters = string.lowercase
>>> letters
'abcdefghijklmnopqrstuvwxyz'
>>> def revert_string(s):
    s_rev = ''
    for c in s:
        s_rev += letters[len(letters) - 1 - letters.find(c)]
    return s_rev

>>> s = 'zearoizuetlkzjetkl'
>>> revert_string(s)
'avzilrafvgopaqvgpo'
于 2011-04-20T10:17:59.497 回答