2013-03-10 4 views
-1

Я пытаюсь сделать небольшой декодер.
я хочу присвоить значение 'a' в специальном письме "("
пример: (= "a"
и если вход "(" печатает его "a" как:Специальные символы в python 3.3

Если я вхожу "(%!)(":

Он печатает эквивалент для каждого символа, подобного:

LadyBa 

Надеюсь, вы поймете, что я имею в виду!
Я знаю, что ему нужен юникод или что-то в этом роде, но я не очень хорош в python
Я пытаюсь учиться.
Работа на окнах питона 3,3

+0

Вы смотрели на питона словарях вообще? Они позволяют вам сопоставить одну вещь с другой. –

+0

Я не думаю, что это относится к списку. Я хочу использовать специальные символы в качестве входных данных и как переменную –

+0

if '" ("' equals '" a "' тогда почему существует только один '' a '' in ''(%!) (" '? –

ответ

0

EDIT: это хорошо, благодаря Ашвини Чаудхари

>>> d = {'(': 'a'} 
>>> "".join(d.get(x,x) for x in 'text with m(ny letters') 
'text with many letters' 

Это уже решение, но делает эквивалент:

Так что вы хотите перевести буквы и сохранить что ты не знаешь?

>>> d = {'(': 'a'} 
>>> ''.join(map(lambda letter: d.get(letter, letter), 'text with m(ny letters')) 
'text with many letters' 

Объяснение


This

d.get(letter, letter) 

пытается найти букву в д, а если нет настоящего возвращает письмо (второе письмо)


lambda letter: lalala 

такое же, как

def f(letter): 
    return lalala 
f # return f 

map(function, list) 

делает это:

[function(element) for element in list] 

, который является короткой формой

l = [] 
for element in list: 
    l.append(function(element)) 
l # returns that list 

''.join(list) 

такая же, как

string = '' 
for element in list: 
    string += element 
string # return string as result 
+0

Как я ноб на python I понимаете только первую строку. Пожалуйста, попробуйте объяснить это. –

+1

Почему лямбда? просто используйте: '" ".join (d.get (x, x) для x в 'text with m (ny letters')' –

2

вы можете использовать str.translate:

In [7]: trans = str.maketrans("(","a") 

In [8]: "(bcd(".translate(trans) 
Out[8]: 'abcda' 

S.translate(table [,deletechars]) -> string

Return a copy of the string S, where all characters occurring in the optional argument deletechars are removed, and the remaining characters have been mapped through the given translation table, which must be a string of length 256 or None. If the table argument is None, no translation is applied and the operation simply removes the characters in deletechars.

+0

Traceback (большинство последний звонок последний): Файл «», строка 1, in trans = string.maketrans() AttributeError: 'module' o bject не имеет атрибута 'maketrans' Я получаю эту ошибку –

+0

@KillerB исправлено, это работает в py3.x. –

+0

можно использовать для назначения большего количества значений в строке, например tra = str.maketrans ("(", "a", "&", "b" и продолжить) –

Смежные вопросы