繁体   English   中英

用重叠词连接输入句子

Connecting input sentences with overlapping words

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

任务是连接重叠的输入句子。 我的问题是如何正确删除重叠部分。

输入:第一行是要连接的句子数。 接下来的几行是句子。 输出:连接句

例子:

输入:

2
The harder you work for something, the
something, the greater you?ll feel when you achieve it.

输出:

The harder you work for something, the greater you?ll feel when you achieve it.

我的代码:

def connect(sentence1,sentence2):
  x= None
  y= None
  for i in range(len(sentence2)):
    if sentence2[:len(sentence2)-i] in sentence1 and len(sentence2[:len(sentence2)-i]) != 1:
        y =(sentence1+' '+sentence2[len(sentence2)-i:].strip())
        x =True
        break
  return x,y
n = int(input())
lst = []
for i in range(n):
  a = input()
  lst.append(a)
for i in lst:
  for j in lst:
    if i ==j:
        pass
    elif True in connect(i,j):
        lst.remove(i)
        lst.remove(j)
        lst.append(connect(i,j)[1])
print(lst[0])

输入 1:

3
The fool doth think he is wise,
wise man knows himself to be a fool.
wise, but the wise

输出 1:不正确

The fool doth think he is wise, man knows himself to be a fool. but the wise

预期输出 1:

The fool doth think he is wise, but the wise man knows himself to be a fool.

输入 2:

7
afraid of greatness.
Be not afraid
some achieve greatness,
greatness thrust upon them.
greatness. Some
Some are born great, some
greatness, and others have greatness

输出 2:错误

line 21, in 
    lst.remove(i)
ValueError: list.remove(x): x not in list

预期输出 2:

Be not afraid of greatness. Some are born great, some achieve greatness, and others have greatness thrust upon them.
1 个回复

您需要跟踪重叠的长度(结束开始或开始结束),以便从您连接的部分之一中剪切适当数量的字符:

sentences = """afraid of greatness.
Be not afraid
some achieve greatness,
greatness thrust upon them.
greatness. Some
Some are born great, some
greatness, and others have greatness""".split("\n")

result = sentences.pop(0) # start with any part, and take it out

while sentences:
    for s in list(sentences):
        atEnd   = next((p for p in range(1,len(s)) if result[-p:]==s[:p]),0)
        if atEnd:                        # length of overlapping end-start
            result = result + s[atEnd:]  # append to end, cut starting overlap
            sentences.remove(s)
            continue
        atStart = next((p for p in range(1,len(s)) if result[:p]==s[-p:]),0)
        if atStart:                      # length of overlapping start-end
            result = s[:-atStart]+result # insert at start, cut ending overlap
            sentences.remove(s)

print(result)

Be not afraid of greatness. Some are born great, some achieve greatness, and others have greatness thrust upon them.
2 用重叠的单词分类句子

我有这个CSV文件有评论(推文,评论)。 我想将它们分为4类,即。 售前 售后 购买 服务查询 现在我面临的问题是: 每个类别之间存在大量重叠的单词,因此使用NaiveBayes失败。 推文的大小只有160个字符,防止一个类别中的单词 ...

3 输入单词以创建句子

我正在制作一个bat文件,以便在DHCP或计算机的静态地址之间进行选择。 该代码工作正常。 我现在想做的是打开bat文件时,如果选择了static,则询问IP地址和子网掩码是什么。 输入地址后,执行netsh命令。 类似于存储单词以使用用户输入的单词创建句子 就像是: ...

4 如何解析输入句子?

我正在制作一个程序,该程序需要用户输入并根据用户的选项选择来处理该输入。 假设我输入了一个字符串,例如“ hello 4是数字,5也是如此”。 如何从字符串中提取数字并将其放入变量中? (在我的示例中,我希望使用4和5。) ...

2018-04-09 15:02:50 1 103   prolog
5 根据输入呼出句子

我是开发Android应用程序的新手,目前正在开发需要用户输入大量数据并将其保存在sharedPreferences作为数据库的android软件。 这是我的编码示例: 然后: 为了节省用户输入: 为了加载数据,我做了这样的事情: 因为我已经在构建器中设置了句子 ...

7 "如何在Java中输入一个句子"

" import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); ...

2016-06-25 11:34:00 8 25148   java
9 连接句子的图

我有几个主题(两个)的句子列表,如下所示: 如您所见,句子之间存在相似性。 我试图通过使用图形(有向)将多个句子联系起来并可视化它们的特征。 该图是根据相似性矩阵构建的,通过应用如上所示的句子的行顺序。 我创建了一个新列 Time 来显示句子的顺序,所以第一行(特朗普说....)是时间 1 ...

10 带有滚动文本和重叠 div 的句子

我正在尝试使用 html 和 css 在句子中间制作滚动文本。 如何使句子的后半部分响应滚动文本? 我敢肯定,响应式甚至不是正确的短语,但希望你能明白我的意思……很好,我正在学习! :) 我真的认为这应该是关于该问题的足够详细信息,但我正在努力满足最低字数要求。 谢谢 /*Sen ...

2020-10-16 15:15:53 1 35   html/ css
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM