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

Python字符串单词计数与拆分:拆分连字符单词为独立单词

拆分连字符连接的单词并正确统计数量

嘿,我懂你现在的困扰——原代码把带连字符的resting-place当成了单个单词,导致最终统计结果是4个,但你需要把它拆成resting和place两个独立单词,统计总数为5。咱们可以通过简单的两步调整来解决这个问题:

解决方案代码

方法一:字符串替换+简单标点清理(无需额外依赖)

这是最直观的处理方式,适合处理常见标点场景:

original = 'This is my resting-place.'
# 第一步:把连字符替换成空格,让连字符连接的两个词被空格分隔开
processed_text = original.replace('-', ' ')
# 第二步:拆分后清理每个单词的标点(这里涵盖常见的句号、逗号、感叹号等)
modified = [word.strip('.,!?') for word in processed_text.split()]
# 兜底过滤空字符串(当前场景不会出现,但可作为通用处理逻辑)
modified = [word for word in modified if word]

print(modified)
numWords = len(modified)
print('Total words are:', numWords)

方法二:正则表达式处理(更通用,适配复杂标点场景)

如果需要处理更多类型的特殊符号,正则表达式会更灵活:

import re

original = 'This is my resting-place.'
# 先把连字符替换成空格,拆分连字符连接的单词
processed_text = original.replace('-', ' ')
# 移除所有非单词、非空格的字符,彻底清理标点
cleaned_text = re.sub(r'[^\w\s]', '', processed_text)
# 拆分得到纯净的单词列表
modified = cleaned_text.split()

print(modified)
numWords = len(modified)
print('Total words are:', numWords)

代码逻辑说明

  • 替换连字符:用replace('-', ' ')把resting-place转换成resting place,让后续split()方法能将它们拆分为两个独立元素
  • 清理标点:无论是strip()还是正则,核心都是移除单词附带的标点符号,避免出现place.这种带标点的“伪单词”
  • 统计数量:直接用len(modified)统计单词总数,比循环累加的写法更简洁高效

运行任意一种方法,你都会得到预期输出:

['This', 'is', 'my', 'resting', 'place']
Total words are: 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:32:29