作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个字符串,例如
'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/
我是一名优秀的程序员,十分优秀!