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

如何调整正则表达式规则,使Python分词代码输出无连字符的目标结果

解决方案

你可以调整正则规则仅匹配纯字母序列,再对匹配结果做首字母大写处理即可,修改后的代码如下:

import regex as re

def tokenize(text):
    # 仅匹配连续的纯字母片段,自动跳过连字符、数字、撇号、标点等非字母字符
    raw_tokens = re.findall(r'\p{L}+', text)
    # 对每个分词做首字母大写,剩余字符保留原有大小写
    return [token[0].upper() + token[1:] for token in raw_tokens]

text = "let's defeat the SARS-coV-2 delta variant together in 2021!"
tokens = tokenize(text)
print("|".join(tokens))

代码修改说明

  • 原正则规则允许匹配包含连字符、数字的字符串,所以会把SARS-coV-2、let识别为单个分词,漏掉了撇号后的s,同时保留了连字符。
  • 改用r'\p{L}+'作为匹配规则后,只会匹配连续的Unicode字母序列,碰到非字母字符就会截断匹配,自然完成按非字母边界拆分的需求,同时自动过滤掉数字、标点。
  • 首字母处理逻辑可以根据你的需求调整:如果需要除首字母外其余字符统一转小写,把列表生成式的内容替换为token.capitalize()即可。

运行上述代码后输出为:Let|S|Defeat|The|SARS|CoV|Delta|Variant|Together|In,符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:30:04