干货|count()方法:统计字符串出现的次数

干货|count()方法:统计字符串出现的次数
最新回答
伪装者

2020-05-17 13:28:39

count() 方法是 Python 字符串处理中常用的内置方法,用于统计子字符串在原字符串中出现的次数。以下是关于该方法的详细说明和示例解析:

核心功能
  • 作用:统计子字符串 sub 在原字符串 str 中出现的次数。
  • 返回值:若子字符串不存在,返回 0;否则返回出现的次数(整数)。
语法格式str.count(sub[, start[, end]])
  • 参数说明

    str:原字符串(不可省略)。

    sub:需统计的子字符串(不可省略)。

    start(可选):检索的起始索引(默认为 0,即从字符串开头开始)。

    end(可选):检索的结束索引(默认为字符串长度,即检索到末尾)。

关键特性
  1. 索引范围

    字符串索引从 0 开始。

    指定 start 和 end 时,包含起始位置,但不包含结束位置(左闭右开区间)。

  2. 重叠匹配

    count() 不统计重叠的子字符串。例如,"aaa".count("aa") 返回 1(而非 2)。

  3. 大小写敏感

    统计时区分大小写。如 "Python".count("p") 返回 0(需改为 "P")。

示例解析示例 1:基本用法str = "
http://c.biancheng.net"print
(str.count('.')) # 输出:2
  • 解释:统计 "." 在字符串中的出现次数,结果为 2(分别在 "c." 和 "net" 前)。
示例 2:指定起始位置str = "
http://c.biancheng.net"print
(str.count('.', 1)) # 输出:2print(str.count('.', 2)) # 输出:1
  • 解释

    从索引 1(第 2 个字符 "t")开始检索,仍找到 2 个 "."(因为前两个 "." 在索引 5 和 7)。

    从索引 2 开始,跳过第一个 "."(索引 1 不是 "."),仅找到 1 个 "."(索引 7)。

示例 3:指定起始和结束位置str = "
http://c.biancheng.net"print
(str.count('.', 2, -3)) # 输出:1print(str.count('.', 2, -4)) # 输出:0
  • 解释

    -3 表示倒数第 3 个字符("n"),实际检索范围为索引 2 到 len(str)-3(即 2 到 18)。

    在此范围内仅找到 1 个 "."(索引 7)。

    当结束位置为 -4(倒数第 4 个字符 "g"),范围内无 ".",返回 0。

注意事项
  1. 参数类型:sub 必须是字符串,否则会抛出 TypeError。
  2. 负索引:start 和 end 可为负数,表示从字符串末尾倒数(如 -1 是最后一个字符)。
  3. 性能:对于长字符串或频繁调用,count() 的时间复杂度为 O(n),需合理使用。
扩展应用
  • 统计字符频率:结合循环统计所有字符出现次数。s = "hello"for char in set(s): print(f"'{char}': {s.count(char)}")
  • 验证子串存在:通过返回值是否大于 0 判断子串是否存在。

通过以上解析和示例,可以全面掌握 count() 方法的用法及边界情况处理。