Skip to main content
 首页 » 编程设计

python之计算子串出现的次数

2025年05月04日16luoye11

参加 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