如何在Python中找到重复的字符串段?



所以我有一些中等长度的字符串-介于几个单词和几个句子之间。有时,文本中的子字符串在一行中重复两次。我需要编写自动代码来识别重复的部分。或者至少用高概率标记它。

我知道的:

  1. 重复子字符串是由几个完整的单词(和标点符号)组成的一系列。重复不会出现在单词中间。
  2. 重复长度可变。它可以是几个单词到几个句子。但它总是至少几个字长。如果可能,我希望避免标记重复的单个单词。
  3. 当重复发生时,它总是恰好重复一次,就在前一次出现之后。就在上次出现之后。(& lt; -)
  4. 我需要在大约一百万个不同的字符串上运行这个检查,所以代码至少要有一定的效率(不是蛮力检查每个选项的方法)。

我已经为此挣扎了一段时间了。非常感谢您的帮助。

由于重复的一个单词子类对于多单词重复,匹配单个单词或类似单词的序列已经很有帮助了。以下是正则表达式,我在一个带有正则表达式搜索的编辑器中尝试过你的问题:

(<w.{3,16}w>).{2,}1

这是第一次发现的重复

重复的长度是可变的。它可以是几个单词到几个句子本身。但至少要有几个字长。如果可能的话,我希望避免标记重复的单个单词。

然后在repeating中找到repeat。所以我们必须调整极限。

部分(<w.{3,16}w>)表示

  • from word start(包括字符)
  • 3到16个任意字符
  • 字尾前(包括字符)

换句话说,一个或多个字符总数为5到18的单词。

部分.{2,}1表示

  • 至少两个字符
  • 无上限
  • 捕获匹配

此处,下限可以更高。应该尝试一个上限,特别是对于较长的文本。

我认为从寻找重复的短字符序列开始,然后通过寻找在第一步的结果中重复的较长的序列来改进(加上末尾的附加字符)。

这也是预处理的问题。我猜如果在不同的地方出现换行(而不是空格),重复的多字序列应该被忽略。

要进一步自动化此操作,您可以切换到Python的re模块。

相关内容

  • 没有找到相关文章

最新更新