如何从以逗号分隔的字符串中去除重复分句
逗号分隔分句去重实现方案
需求明确:处理函数返回的逗号分隔字符串,按完整分句维度去重(仅删除完全重复的分句,不会误删仅含重复单词的不同分句),保留分句的原始出现顺序。
示例:
- 输入:
"lorem ipsum dolor, lorem ipsum dolor, lorem mark dol" - 目标输出:
"lorem ipsum dolor, lorem mark dol"
Python 实现
def deduplicate_clauses(input_str): # 拆分分句并去除每个分句前后的空白字符 clauses = [clause.strip() for clause in input_str.split(',')] # 去重并保留原始顺序 seen = set() unique_clauses = [] for clause in clauses: if clause not in seen: seen.add(clause) unique_clauses.append(clause) # 重新拼接成逗号分隔的字符串 return ', '.join(unique_clauses) # 测试示例 test_input = "lorem ipsum dolor, lorem ipsum dolor, lorem mark dol" print(deduplicate_clauses(test_input)) # 输出结果:lorem ipsum dolor, lorem mark dol
JavaScript 实现
function deduplicateClauses(inputStr) { // 拆分分句并清理前后空白 const clauses = inputStr.split(',').map(item => item.trim()); // 利用Map的插入顺序特性去重 const uniqueMap = new Map(); clauses.forEach(clause => { if (!uniqueMap.has(clause)) { uniqueMap.set(clause, clause); } }); // 拼接回目标字符串 return Array.from(uniqueMap.values()).join(', '); } // 测试示例 const testInput = "lorem ipsum dolor, lorem ipsum dolor, lorem mark dol"; console.log(deduplicateClauses(testInput)); // 输出结果:lorem ipsum dolor, lorem mark dol
关键注意点
- 必须先清理分句前后的空白字符,避免因空格差异导致重复分句被误判为不同内容(比如
"abc"和" abc") - 去重过程需保留分句的原始出现顺序,因此不能直接依赖无序集合(如Python的
set直接转列表会打乱顺序)
内容的提问来源于stack exchange,提问作者Elias Prado
相关产品推荐
相关产品推荐

