2016-05-08 3 views
3

Я хочу, чтобы пользователь вводил фразу, а когда слова «happy»/«sad» находятся внутри фразы, я хочу, чтобы программа возвращала эти слова, заменяя их значениями в словаре. Вот мой код:Заменить несколько слов в строке со словарем (python)

# dictionary 
thesaurus = { 
       "happy": "glad", 
       "sad" : "bleak" 
      } 

# input 
phrase = input("Enter a phrase: ") 

# turn input into list 
part1 = phrase.split() 
part2 = list(part1) 

# testing input 
counter = 0 
for x in part2: 
    if part2[counter] in thesaurus.keys(): 
     phrase.replace(part2[counter], thesaurus.values()) # replace with dictionary value??? 
     print (phrase) 
    counter += 1 

код работает только я не могу понять, как заменить несколько слов, чтобы получить программу для печати замененных слов.

Таким образом, если пользователь вводит

"Hello I am sad" 

желаемый результат будет

"Hello I am bleak" 

Любая помощь будет оценен по достоинству!

+0

как желателен выход будет выглядеть? нужен положительный контроль/тест – aaaaaa

+0

и в чем проблема, которую вы хотите решить? заменить некоторые слова фразой на синонимы? – aaaaaa

+0

Когда вы разбиваете, он уже возвращает список, поэтому вам не нужно отображать список. – JulienD

ответ

3

Перевести все слова в предложении ввода, а затем присоединиться переведенные части:

translated = [] 
for x in part2: 
    t = thesaurus.get(x, x) # replaces if found in thesaurus, else keep as it is 
    translated.append(t) 

newphrase = ' '.join(translated) 
+0

спасибо! Если я хочу, чтобы новое слово из словаря было напечатано в шапках, где бы я добавил «.upper()»? –

+0

Если только когда слово найдено, я бы использовал что-то вроде 't = thesaurus [x] .upper(), если thesaurus.get (x) else x' – JulienD

+0

спасибо! Если бы я должен был изменить код, чтобы добавить больше слов, связанных с ключом словаря, например, «грустно»: [«bleak», «blue», «depressed»], как бы изменить приведенный выше ответ, чтобы вернуть случайное слово из списка в словаре? Я пытаюсь включить popitem(), но не могу поместить его в нужное место в коде –

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