Я пытаюсь получить доступ к диктату, который я создал под названием Бренды. Затем я пытаюсь заменить информацию из пользовательского ввода на информацию из диктата. Я изо всех сил пытаюсь распечатать и заменить текст пользовательского ввода. В настоящее время я могу только распечатать все содержимое таблицы со вставленными словами, что, к сожалению, не очень помогает.
BRANDS = {
'Velcro': 'hook and loop fastener',
'Kleenex': 'tissues',
'Hoover': 'vacuum',
'Bandaid': 'sticking plaster',
'Thermos': 'vacuum flask',
'Dumpster': 'garbage bin',
'Rollerblade': 'inline skate',
'Asprin': 'acetylsalicylic acid'
}
userinput = input("Sentence: ")
print('a', userinput, 'is', BRANDS[userinput])
Это пример того, что должен делать мой код.
Sentence: I bought some Velcro shoes.
Result >>> I bought some hook and loop fastener shoes.
5 ответов
Вы можете определить функцию для циклического перемещения по вашему словарю и выполнять str.replace
несколько раз:
def replacer(x, d):
for k, v in d.items():
x = x.replace(k, v)
return x
userinput = input("Sentence: ")
print(replacer(userinput, BRANDS))
Примере:
Sentence: I bought some Velcro shoes.
I bought some hook and loop fastener shoes.
Вы можете использовать dict.get()
со списком, чтобы перебрать значения вашего пользовательского ввода (разделенные пробелом) и заменить их значениями из вашего словаря BRANDS. Метод dict.get()
сначала проверяет, существует ли ключ этого конкретного значения i
. Если это произойдет, он вернет соответствующее значение из указания BRANDS или просто сохранит исходное значение i
. Затем вы можете передать этот список str.join()
для формирования окончательной строки
print(' '.join(BRANDS.get(i,i) for i in userinput.split()))
Надеюсь это поможет!
Вот пример, который не требует зацикливания всех элементов в вашем dict
.
Используя регулярное выражение, вы можете выполнить замену за один проход вместо использования str.replace
для каждого элемента в BRANDS
.
Код
import re
BRANDS = ...
def replacer(sentence, replacements):
pattern = '|'.join(replacements)
repl = lambda m: replacements[m.group()]
return re.sub(pattern, repl, sentence)
userinput = input("Sentence: ")
print(replacer(userinput, BRANDS))
Примере
Sentence: Kleenex and Hoover
tissues and vacuum
Попробуй это:
for key in BRANDS:
userinput = userinput.replace(key, BRANDS[key])
print(userinput)
ИЛИ ЖЕ:
def repl(d,s):
d={k:v for k,v in d.items() if k in s}
return s.replace(next(iter(d)),next(iter(d.values())))
inp = input("Sentence: ")
print(repl(BRANDS,inp))
Пример вывода:
Sentence: I bought some Velcro shoes
I bought some hook and loop fastener shoes
Похожие вопросы
Новые вопросы
python
Python - это мультипарадигмальный динамически типизированный многоцелевой язык программирования, разработанный для быстрого (для изучения, использования и понимания) и для обеспечения чистого и унифицированного синтаксиса. Обычно используются две похожие, но несовместимые версии Python, Python 2.7 и 3.x. Для специфичных для версии вопросов Python добавьте тег [python-2.7] или [python-3.x]. При использовании варианта или библиотеки Python (например, Jython, PyPy, Pandas, Numpy), пожалуйста, включите их в теги.