访问字典,用字典信息替换用户输入中的项目

时间:2018-08-20 01:37:44

标签: python string dictionary input

我正在尝试访问一个名为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.

5 个答案:

答案 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