Python中如何用正则移除字符串列表重复句子且不删除重复词
解决方案
原有方案按单词拆分后调用OrderedDict去重,本质是对单个词汇去重,自然会误删句内的重复单词,不符合仅移除重复整句的需求。以下两种实现都可以满足要求:
方案1:正则快速替换(适用于整段内容完全重复的场景)
你给出的示例中重复内容均为整段完全重复两次,可直接用正则捕获重复片段替换为单次内容,代码最简单:
import pandas as pd df['cleaned'] = df['Lines'].str.replace(r'^(.+?)\1+$', r'\1', regex=True)
正则逻辑说明:
- 用非贪婪模式捕获从开头开始的任意内容作为分组1
- 匹配后续完全重复分组1的内容直到字符串结尾
- 替换为分组1的内容,直接移除重复部分
方案2:按句子拆分去重(适用于任意位置存在重复句子的场景)
如果重复句子不是连续整段重复,可先按句子边界拆分后按顺序去重,再拼接回完整字符串:
import re import pandas as pd def deduplicate_sentences(text): # 以句号+任意空白作为句子分隔符拆分,保留句号不丢失 sentences = [s.strip() for s in re.split(r'(?<=\.)\s*', text) if s.strip()] seen = set() unique_sens = [] for sen in sentences: if sen not in seen: seen.add(sen) unique_sens.append(sen) return ' '.join(unique_sens) df['cleaned'] = df['Lines'].apply(deduplicate_sentences)
两种方案运行后得到的结果都和你期望的输出一致,不会删除句内的重复单词。
内容的提问来源于stack exchange,提问作者code_learner
相关产品推荐
相关产品推荐

