上CS课的新手程序员。在带有HPmini(Atom处理器)笔记本电脑的Ubuntu 14.04中使用Python 2.7。 “加拿大的香蕉分析”中有多少个“安娜”?搜索结果应该是4个而不是3个,香蕉有2个“安娜”实例。 // 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

10-06 13:00
查看更多