Python如何从字符串列表删除指定字符串 修复子串误匹配问题
Python字符串列表精确删除指定词实现
问题复现
原有实现采用子串包含匹配逻辑删除指定词,会误删包含目标子串的正常词汇,原代码如下:
features = ['ar','ar urticaria','urticaria','including','allergic'] rubbish_words = ['including','ar'] words = [] for line in features: new_words = ' '.join([word for word in line.split() if not any([zeyda in word for zeyda in rubbish_words])]) words.append(new_words) print(words)
- 原代码实际输出:
['', '', '', '', 'allergic'] - 目标预期输出:
['', 'urticaria', 'urticaria', '', 'allergic'](注:原预期描述中urticaria前的空格为笔误,按常规分词清洗逻辑不会残留多余前导空格)
错误原因
原过滤条件使用zeyda in word做子串包含判断:只要垃圾词是当前单词的连续字符片段,就会把整个单词过滤掉。示例中单词urticaria包含字符序列ar,因此被误删,导致结果不符合预期。
修正代码
将子串包含判断改为精确相等匹配,只有拆分出的单词和垃圾词列表中的项完全一致时才执行删除:
features = ['ar','ar urticaria','urticaria','including','allergic'] rubbish_words = ['including','ar'] words = [] for line in features: new_words = ' '.join([word for word in line.split() if not any(word == zeyda for zeyda in rubbish_words)]) words.append(new_words) print(words)
运行上述代码即可得到符合预期的输出结果,不会再误删包含目标子串的正常词汇。
内容的提问来源于stack exchange,提问作者Ahmed Bk
相关产品推荐
相关产品推荐

