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

如何在语料库中查找含2个字母g的单词并实现大小写不敏感统计

问题解答

现有代码结果异常的原因

你当前的判断逻辑if 'g' in word and 'g' in word完全等价于只判断单词中是否存在至少1个g,重复写两次相同的条件不会生效,所以统计出来的是所有带至少1个g的单词,数量自然远高于预期。

是否需要用正则实现?

两种方案都可以,不需要正则也能快速实现,正则只是可选方案:

  • 非正则方案:直接统计单词中g的出现次数即可,代码更易读
  • 正则方案:适合复杂匹配规则的场景,当前需求用正则属于大材小用

大小写不敏感的实现方法

统一把单词转为全小写/全大写后再做判断即可,正则方案也可以直接加忽略大小写的参数实现。

修正后的非正则实现代码

import nltk
from nltk.corpus import gutenberg

allwords = gutenberg.words()
g_words = []
for word in allwords:
    # 先转小写,再统计g的数量为2
    if word.lower().count('g') == 2:
        g_words.append(word)

print(len(g_words))

如果你的需求是至少包含2个g,把==2改成>=2即可。

可选的正则实现代码

import nltk
import re
from nltk.corpus import gutenberg

# 预编译正则,匹配包含至少2个g的情况,忽略大小写
pattern = re.compile(r'g.*g', re.IGNORECASE)
allwords = gutenberg.words()
g_words = [word for word in allwords if pattern.search(word)]

print(len(g_words))

如果要匹配恰好2个g,正则可以改成r'^[^g]*g[^g]*g[^g]*$',再加上忽略大小写的标志即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:48:03