我正在尝试访问一个名为Brands的指令。 然后,我尝试用dict中的信息替换用户输入中的信息。我正在努力打印并替换用户输入的文本。目前,我唯一能做的就是打印出所有表格内容,但插入的单词很遗憾没有太大帮助。
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.
答案 0 :(得分:1)
您可以定义一个功能来循环浏览字典并重复执行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.
答案 1 :(得分:0)
尝试一下:
for key in BRANDS:
userinput = userinput.replace(key, BRANDS[key])
print(userinput)
答案 2 :(得分:0)
OR:
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
答案 3 :(得分:0)
您可以结合列表理解使用dict.get()
来遍历用户输入的值(以空格分隔),并将其替换为BRANDS词典中的值。 dict.get()
方法将首先检查特定值i
的密钥是否存在。如果这样做,它将从BRANDS字典返回相应的值,否则只需保留i
的原始值。然后,您可以将此列表传递到str.join()
以形成最终字符串
print(' '.join(BRANDS.get(i,i) for i in userinput.split()))
希望这会有所帮助!
答案 4 :(得分:0)
这是一个示例,不需要循环访问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