You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中去除文本特殊字符生成单词列表及词频统计问题求助

问题解决:去除文本特殊字符并生成单词列表

先说说你代码里的问题:

  • 原代码只有在单词包含特殊字符时才执行append操作,那些本身没有特殊字符的单词根本没被加入new_list,所以输出只会有operations、below这类带符号的单词。
  • 当你尝试if i NOT in的条件时,单词里的每个正常字符都会触发一次append,导致同一个单词被重复添加多次。

方法一:一次性清除所有特殊字符(高效简洁)

用字符串的translate方法批量处理所有特殊字符,再分割成单词列表:

special_chars = '!,.?;:#$%^&*(),'
original_text = input().lower()
# 创建转换表删除所有特殊字符,再分割为单词
cleaned_list = original_text.translate(str.maketrans('', '', special_chars)).split()
print(cleaned_list)

这个方法会先把文本里所有目标特殊字符一次性清除,再按空格分割成单词,完全保留原文本的单词顺序。

方法二:逐个单词过滤字符(直观易懂)

如果不想用translate,可以对每个单词单独过滤特殊字符:

special_chars = set('!,.?;:#$%^&*(),')
original_list = input().lower().split()
new_list = []
for item in original_list:
    # 过滤掉单词里的特殊字符,拼接成干净的单词
    cleaned_word = ''.join([c for c in item if c not in special_chars])
    new_list.append(cleaned_word)
print(new_list)

每个单词只处理一次,不会出现重复添加的问题,最终列表和原单词顺序完全一致。

额外:统计单词出现次数

拿到干净的单词列表后,用collections.Counter可以快速统计次数:

from collections import Counter
word_counts = Counter(cleaned_list)
print(word_counts)

比如输入你的测试文本,会输出类似Counter({'the': 2, 'operations': 1, 'along': 1, ...})的结果。

内容的提问来源于stack exchange,提问作者Kris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:47:18