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

如何在Python中移除含非字母字符的tokens?附示例说明

如何在Python中移除句子里包含非字母字符的tokens?

嘿,这个需求实现起来挺简单的,我给你分享两种实用的方法,都能完美解决你的问题:

方法一:字符串方法 + 列表推导式

这种方法无需额外导入模块,直接利用Python内置的字符串方法就能搞定。核心思路是先把句子拆分成单词,再逐个检查每个单词是否全部由字母组成,最后把符合条件的单词重新拼接成句子。

代码示例:

# 输入语句
sentence = "I like python@ pretty muc*h."

# 拆分句子为单词列表,筛选出全字母的单词
clean_tokens = [token for token in sentence.split() if token.isalpha()]

# 重新拼接成干净的句子
clean_sentence = ' '.join(clean_tokens)
print(clean_sentence)  # 输出: I like pretty

这里的token.isalpha()会返回True当且仅当该单词的所有字符都是字母(大小写都算),只要有一个非字母字符(比如@、*、.)就会被过滤掉。

方法二:正则表达式

如果你需要更灵活地处理复杂的文本场景(比如单词和标点连在一起的情况),正则表达式会是更好的选择。我们可以用正则匹配出所有仅由字母组成的单词。

代码示例:

import re

# 输入语句
sentence = "I like python@ pretty muc*h."

# 匹配所有纯字母的单词
clean_tokens = re.findall(r'\b[a-zA-Z]+\b', sentence)

# 拼接成句子
clean_sentence = ' '.join(clean_tokens)
print(clean_sentence)  # 输出: I like pretty

正则表达式\b[a-zA-Z]+\b的含义是:

  • \b:匹配单词边界,确保我们匹配的是完整的单词
  • [a-zA-Z]+:匹配一个或多个大小写字母
  • 整个表达式会提取出所有符合“纯字母单词”要求的内容

小提示

如果你的需求后续有变化(比如需要保留带撇号的单词,像don't),可以稍微调整判断逻辑:

  • 方法一可以改成:all(c.isalpha() or c == "'" for c in token)
  • 方法二可以把正则改成:r"\b[a-zA-Z']+\b"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:22:53