gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:43:33 26 4
gpt4 key购买 nike

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

'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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com