python - 计算子串出现的次数

标签 python methods count substring

参加 CS 类(class)的新手程序员。在带有 HPmini(Atom 处理器)笔记本电脑的 Ubuntu 14.04 中使用 Python 2.7。 How many 'ana' are in "Canada's banana analysis" 搜索到的结果应该是4而不是3,banana有2个'ana'实例'.//f.find() 会给我索引,不好。 有没有办法在 for 循环内分割搜索循环,例如:if i[n:n+4] == 'ana': ?因此,在每次迭代时,它都会向前看 3 个字符并进行测试 'blah=='ana'://需要什么方法。预先感谢您对此进行调查。不需要确切的答案只是想法。 我现在/最近的代码是:

  g="Canada's bananas analysis"  # main string
  b='ana'                        # sub-string to be found
  anaSt=g.count(b)               # meant to count instances of 'ana'
  lenG=len(g)                    #length of main string
  k=0
  for i in range(lenG):
      if 'ana' in g:
          k +=1
          print 'k: ', k,
  print '\n', lenG
  print "'ana' in string: ",anaSt

最佳答案

使用 .count.find 的问题是您找不到重叠的字符串:

>>> "banana".find("ana")
1
>>> "banana".count("ana")
1

你可以这样做:

>>> g="Canada's bananas analysis"
>>> sub_string="ana"
>>> [1 for i in range(0, len(g)-len(sub_string)) if g[i:i+len(sub_string)]==sub_string] 
[1, 1, 1, 1]

或者,更一步一步:

>>> count=0
>>> for i in range(0, len(g)-len(sub_string)):
...     if g[i:i+len(sub_string)]==sub_string:
...         count+=1
... 
>>> count
4

关于python - 计算子串出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35000076/

相关文章:

python - 在 httplib.HTTPConnection 上多次发送,在 HTTPResponse 上多次读取?

python - 如何使用 Python API 创建新的 Perforce 用户?

MySQL 简单 COUNT 花费很长时间

javascript - 我可以在方法调用中使用 null 作为参数吗?

java - 如何通过名称调用 getter 方法?

mysql - 如何通过主键获取列组中唯一值的计数

excel - 如何从另一张纸上的数据透视表计算 COUNTIF "=#N/A"?

python - 如何在virtualenv中使用Pacman安装的NumPy?

python - 从 python 读取 wav 文件并将帧转换为 RAW s16le 字符串

c++ - 同时需要 typedef 和 class