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
相关产品推荐
相关产品推荐

