【问题标题】:finding strings in one list and based on what it says, replacing it with strings from another list在一个列表中查找字符串并根据它所说的内容,用另一个列表中的字符串替换它
【发布时间】:2013-03-25 01:13:53
【问题描述】:

基本上我有一个用户输入一个句子

例如。 “你好,你好吗?”

从一个大列表中,它将“are”替换为“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"

据我了解(这里是新手),它将用户输入转换为一个列表,然后将该列表中的每个项目与“反射”列表中的项目进行比较,然后将一个列表中的相同字符串替换为旁边的字符串它例如。 “是”与“是”

我一直在尝试各种方法来做到这一点,但似乎无法弄清楚

【问题讨论】:

    标签: python string list replace


    【解决方案1】:

    尝试学习使用列表推导式,这是在 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)
    

    我们来分析一下列表推导:

    1. 首先我们将用户输入拆分成一个列表user_input.split()

    2. 然后我们遍历用户输入的词for key in user_input.split()

    3. 对于用户输入单词中的每个单词,我们都会查询反射字典。使用 reflect.get(key, key) 是一种在 reflect dict 中查询键的方法 如果我们找不到键,则返回默认值 key

    4. 最后,我们用[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]]包装所有这些理解

    瞧!

    【讨论】:

      【解决方案2】:

      到目前为止,这是一个好的开始。至于下一步,对所有单词的映射做一个大字典,查找该字典中的每个单词,如果有替换就替换它。

      【讨论】:

      • 所以你的意思是将我的列表更改为字典,以便每个单词在我的字典中都有一个分配的替换词,我可以切换它还是什么?
      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 2015-06-27
      • 2016-01-20
      • 2012-08-18
      • 2011-12-23
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多