python - 如何在Python中删除重复的短语?

标签 python regex python-2.7 replace

假设我有一个字符串,例如

'I hate *some* kinds of duplicate. This string has a duplicate phrase, duplicate phrase.'

我想删除第二次出现的重复短语,而不删除其组成部分的其他出现,例如duplicate的其他使用。

此外,我需要删除所有潜在重复短语,而不仅仅是我事先知道的某些特定短语的重复项。

我发现了几篇关于类似问题的帖子,但没有一个可以帮助我解决我的特定问题:

我希望采用最后一个链接的方法 (re.sub(r'\b(.+)(\s+\1\b)+', r'\1', s) )出于我的目的,但无法弄清楚如何做到这一点。

如何从 Python 字符串中删除两个或多个单词的所有任意重复短语?

最佳答案

感谢大家的尝试和评论。我终于找到了解决办法:

s = 'I hate *some* kinds of duplicate. This string has a duplicate phrase, duplicate phrase.'
re.sub(r'((\b\w+\b.{1,2}\w+\b)+).+\1', r'\1', s, flags = re.I)
# 'I hate *some* kinds of duplicate. This string has a duplicate phrase.'

说明

正则表达式

r'((\b\w+\b.{1,2}\w+\b)+).+\1'

查找每次出现的由一个或两个[任何字符]分隔的多行字母数字字符(以涵盖单词不仅由空格分隔,而且可能由句点或逗号和空格分隔的情况),然后重复跟随一些不确定长度的[任何字符]。然后

re.sub(r'((\b\w+\b.{1,2}\w+\b)+).+\1', r'\1', s, flags = re.I)

用第一组由一个或两个[任何字符]分隔的字母数字字符替换此类出现,并确保忽略大小写(因为重复的短语有时可能出现在句子的开头)。

关于python - 如何在Python中删除重复的短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53181784/

相关文章:

JavaScript 正则表达式 : inserting span tag for each character

python - 如何在 Python 中将文件写入 Zip 文件的根目录

python - 嵌套的相对导入似乎不起作用

python - 如何在 Django 中使用 PIL 保存图像时给出路径

python - 如何在Python中增加图像的维度并提高图像的质量?

javascript - 将字符串传递到正则表达式中

css - 如何使用Perl增加CSS属性值

python - 无法在 Windows 8 上安装 Python 2.7.8

python - 带有 R (rocker/r.base) 和 python 的 Docker 镜像在 EC2 上运行时无法工作,但本地就可以了

python - 从列表中创建所有可能的组合