Конденсировать список в строку: ['z', 'y', 'x' ...] -> 'zyx ...'?Python (2.7.1) - PullRequest
3 голосов
/ 20 апреля 2011

Если у меня есть список = '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 ]

10 голосов
/ 20 апреля 2011
the_list = ['z', 'y', 'x', 'w', 'v', 'w', 'x', 'y', 'z']
print "".join(the_list)
5 голосов
/ 20 апреля 2011

Для моноалфавитного замещения используйте maketrans и перевод из строкового модуля.Они работают как команда unix tr .Соединение с пустым разделителем является правильным ответом для этого последнего шага, но не обязательно для этой конкретной задачи.

2 голосов
/ 20 апреля 2011

пример использования макетранса и перевода:

>>> 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)
2 голосов
/ 20 апреля 2011
''.join(translate)

Я не уверен, что это то, что вы хотите?

1 голос
/ 20 апреля 2011
>>> import string
>>> table = string.maketrans(string.lowercase, string.lowercase[::-1])
>>> 'abcdedcba'.translate(table)
'zyxwvwxyz'
0 голосов
/ 20 апреля 2011
>>> 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'
...