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

如何用Python将colour's这类带撇号的词拆分为两个词统计词数?

问题分析与修正代码

你的代码存在几个关键问题:

  • 正则表达式写法错误:r'*.[["a-zA-Z"]]' 完全不符合语法规则,* 不能作为正则表达式的开头,嵌套括号和转义引号也都是无效写法。
  • 错误地将文件对象传入re.search,应该传入读取到的文本内容read而非text_file。
  • re.search仅返回第一个匹配结果,无法统计所有符合条件的情况,应使用re.findall或直接做文本替换处理。
  • 逻辑错误:直接拆分文本后累加匹配数的方式不准确,像colour's原本算1个词,要拆成2个词,正确做法是先拆分这类结构再统计总数。

下面是修正后的代码,可实现将colour's这类词拆分为colour和s并统计词数:

import sys
from pathlib import Path
import re

text_file = Path(sys.argv[1])

if text_file.exists() and text_file.is_file():
    read = text_file.read_text()
    # 将"word's"这类结构替换为"word s",拆分撇号后的后缀
    processed_text = re.sub(r"(\w)'(\w+)", r"\1 \2", read)
    # 按空白字符拆分后统计总词数
    word_count = len(processed_text.split())
    print(f'{text_file} 共有 {word_count} 个词')
else:
    print(f'未找到文件: {text_file}')

代码说明

  • 正则表达式r"(\w)'(\w+)":匹配由撇号连接的字母/数字/下划线组合,第一个分组(\w)匹配撇号前的单词主体,第二个分组(\w+)匹配撇号后的后缀部分。
  • re.sub将匹配到的内容替换为\1 \2,把撇号替换成空格,实现词的拆分。
  • 最后用split()按空白字符拆分文本,统计得到拆分后的总词数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:18:20