2011-04-20 4 views
2

제가 목록이있는 경우 = 'abcdedcba'[ 'z', 'y', 'x'...] -> 'zyx ...'문자열로 압축 목록? 파이썬 (2.7.1)

나는 원한다 A = Z, B = Y, w =의 X, D = E = V c를 때문에 번역 할 로 :

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

번역 형태로 다시받을 수 있나요 입력하면?

답변

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

+1 당신은 나를 이길 . –

2
''.join(translate)

나는 이것이 당신이 원하는 모르겠어요?

5

단일 대문자 대체의 경우 문자열 모듈의 maketranstranslate을 사용하십시오. 그들은 유닉스 tr 명령처럼 작동합니다. 빈 분리 기호로 결합하는 것은 마지막 단계에 대한 정답이지만이 정확한 작업에는 필요하지 않습니다.

2

maketrans를 사용하여 번역의 예 :

>>> 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) 
+1

''abdedddfdffdabe''는'translate()'메소드를 가지고 있습니다. 따라서'abdedddfdffdabe '.translate (table)' –

+0

을 사용할 수 있습니다. 그래서 사전 단계를 건너 뛸 수 있습니까? –

+0

@gnibbler : 감사합니다. 제 대답을 편집했습니다. –

1
>>> import string 
>>> table = string.maketrans(string.lowercase, string.lowercase[::-1]) 
>>> 'abcdedcba'.translate(table) 
'zyxwvwxyz' 
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' 
관련 문제