如何正确调用word类并去除其中的重复单词?
解决重复单词去除问题
问题根源
你之前的错误在于:原来代码里的word是循环迭代中的单个字符串变量,每次循环都会被新的单词覆盖,最终它只存储了最后一个被处理的单词。当你把input_list_of_strings = word后,遍历这个变量其实是在遍历该单词的每个字符,所以才会得到类似['e']的结果。
正确实现方式
要实现需求,你需要先收集所有不在words_list中的单词,再对这个集合去重,最后用空格连接成指定格式的字符串。
完整代码示例
with open("wordslist.txt") as f: # 用集合存储单词,查询效率更高 words_list = {word.strip() for word in f} # 收集所有不符合条件的单词 mismatched_words = [] with open("negation_handling.csv") as g: for tweet in g: # 分割每行的单词,同时处理前后空白字符 for word in tweet.strip().split(): if word not in words_list: mismatched_words.append(word) # 方式1:去重且保留单词首次出现的顺序 unique_words = list(dict.fromkeys(mismatched_words)) # 方式2:去重但打乱顺序(效率更高,适合不关心顺序的场景) # unique_words = list(set(mismatched_words)) # 按要求格式输出,用空格连接所有唯一单词 print(' '.join(unique_words))
代码说明
- 用
word.strip()替代removesuffix("\n"),可以同时处理换行符和单词前后的空白字符,逻辑更健壮。 - 先把所有符合条件的单词收集到
mismatched_words列表中,避免直接打印导致数据丢失。 dict.fromkeys(mismatched_words)会自动保留键的唯一性,且保持单词首次出现的顺序,转成列表后就是去重后的有序单词列表。- 最后用
' '.join(unique_words)将列表转为空格分隔的字符串,完全匹配你需要的输出格式。
内容的提问来源于stack exchange,提问作者Zulfi A
相关产品推荐
相关产品推荐

