将列表压缩为字符串:['z','y','x'...] -> 'zyx...' ? Python (2.7.1)

5 投票
6 回答
9726 浏览
提问于 2025-04-16 16:05

如果我有一个字符串

list='abcdedcba'

我想把里面的字母换成这样:

a=z, b=y, c=x, d=w, e=v

那么它就会变成:

translate='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']

我该怎么把它变回

translate='zyxwvwxyz'

的形式呢?

6 个回答

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)
5

对于单字母替换,可以使用 maketranstranslate 这两个函数,它们来自字符串模块。它们的工作方式类似于 Unix 系统中的 tr 命令。最后一步用空的分隔符连接是正确的做法,但对于这个具体的任务来说并不是必须的。

12
the_list = ['z', 'y', 'x', 'w', 'v', 'w', 'x', 'y', 'z']
print "".join(the_list)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答