上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