【问题标题】:How do I convert a list of strings to a proper sentence如何将字符串列表转换为正确的句子
【发布时间】:2021-02-13 11:36:21
【问题描述】:

如何将字符串列表转换为这样的正确句子?

lst = ['eat', 'drink', 'dance', 'sleep'] 
string = 'I love"
output: "I love to eat, drink, dance and sleep."

注意:“to”需要生成而不是手动添加到字符串中 谢谢!

【问题讨论】:

  • 这听起来像是一个编程作业。你卡在哪个部分?你知道列表切片,你可能需要它(将列表分成第一个和最后一个元素,以及中间的所有元素)?
  • 这是一个 NLP 问题吗?这是与 join() 方法有关的问题吗? “需要生成”是什么意思?你试过什么?
  • 你能说得更准确一点吗?你想在最后生成“和”吗?如果我们添加更多动词,输出应该如何改变,等等(更重要的是为什么不能“手动”添加“to”,但“I love”似乎没问题)
  • 我猜,如果需要生成 to,那么应该将 I love 输入到经过训练的 AI 模型,然后该模型可以轻松猜测和挑选相应的动词,添加到给定的字符串列表中。就像谷歌搜索一样。

标签: python arrays string


【解决方案1】:

您可以用逗号连接除最后一个以外的所有动词,并用and添加最后一个

def build(start, verbs):
    return f"{start} to {', '.join(verbs[:-1])} and {verbs[-1]}."

string = 'I love'
lst = ['eat', 'drink', 'dance', 'sleep']
print(build(string, lst))  # I love to eat, drink, dance and sleep

lst = ['eat', 'drink', 'dance', 'sleep', 'run', 'walk', 'count']
print(build(string, lst))  # I love to eat, drink, dance, sleep, run, walk and count.

【讨论】:

    【解决方案2】:

    一个选项,使用列表连接字符串:

    lst = ['eat', 'drink', 'dance', 'sleep'] 
    string = 'I love'
    output = string + ' to ' + ', '.join(lst)
    output = re.sub(r', (?!.*,)', ' and ', output)
    print(output)  # I love to eat, drink, dance and sleep
    

    请注意,上面对re.sub 的调用选择性地将最后的逗号替换为and

    【讨论】:

      【解决方案3】:

      嘿,您可以通过执行以下操作添加列表的字符串元素以形成更大的字符串:-

      verbs = lst[:-1].join(", ") # This will result in "eat, drink, dance"
      verbs = verbs + " and " + lst[-1] # This will result in "eat, drink, dance and sleep"
      string = string + ' to ' + verbs # This will result in "I love to eat, drink, dance and sleep"
      print(string)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 2012-10-23
        • 2014-04-03
        相关资源
        最近更新 更多