基本上我有一个用户输入一个句子
例如。 “你好,你好吗?”
并从大型列表中将“是”替换为“am”,将“you”替换为“I”。返回:
“你好,我怎么样?”
问题是我不知道该怎么做。
所以我的列表看起来有点像reflections = [["I, you"],["are","am]] ---> etc.
到目前为止,我已经有一些代码从用户收集原始输入,然后调用此函数来回复它。
def reflects_users_string(reply):
reply_list = reply.split()
for _ in reply_list
if ????
????
????
else
print "i don't understand"
根据我的理解(noob here),它将用户输入转换为列表,然后将该列表中的每个项目与“reflection”列表中的项目进行比较,然后将一个列表中的相同字符串替换为旁边的字符串它,例如。 “是”与“我”
我一直在玩各种各样的方法来做到这一点,但似乎无法弄清楚
答案 0 :(得分:0)
到目前为止,这是一个良好的开端。至于下一步,制作所有单词映射的大字典,查找该单词中的每个单词,如果有替换单词则替换它。
答案 1 :(得分:0)
尝试学习使用列表推导,这是一种在make迭代中过滤掉列表的强大方法。
让我们尝试用列表推导解决你的问题:
#first we need to create mappings in a dict for your reflections
reflect = {
'you': 'I',
'are': 'am'
}
# After we read user input
user_input = 'hello, how are you ?'
#Now look how we can replace all words in user_input from reflect with one line
reflected = [word for word in [reflect.get(key, key) for key in user_input.split()]]
print ' '.join(reflected)
让我们分析列表理解:
首先,我们将用户输入拆分为列表user_input.split()
然后我们通过用户输入单词for key in
user_input.split()
对于用户输入单词中的每个单词,我们查询reflect dict。运用
reflect.get(key, key)
是一种查询密钥reflect
dict的方法
如果我们找不到密钥,则返回默认值key
代替。
最后,我们用[word for word in [getting reflected words from user input and a default value of the same word if we can't find it's reflection]]
和Voila!