擅长:python、mysql、java
<h2>使用正则表达式</h2>
<p>除了您描述的<code>count()</code>方法之外,regex是一个明显的替代方法</p>
<pre><code>import re
needle = r'TEST'
haystack = 'khjkzahklahjTESTkahklaghTESTjklajhkhzkhjkzahklahjTESTkahklagh'
pattern = re.compile(needle)
print len(re.findall(pattern, haystack))
</code></pre>
<h2>捷径</h2>
<p>如果您需要构建子字符串的字典,那么您可以只使用这些字符串的子集来实现这一点。假设您知道在<code>data</code>中要查找的<code>needle</code>,那么您只需要<code>data</code>的子串字典,这些子串的长度与{<cd2>}相同。这很快。在</p>
^{pr2}$
<h2>暴力:建立所有子串的字典</h2>
<p>如果需要对所有可能的子字符串进行计数,此方法可行,但速度非常慢:</p>
<pre><code>from collections import Counter
def gen_sub(s):
for start in range(0, len(s)):
for end in range(start+1, len(s)+1):
yield s[start:end]
data = 'khjkzahklahjTESTkahklaghTESTjklajhkhz'
parts = Counter([sub for sub in gen_sub(data)])
print parts['TEST']
</code></pre>
<p>子串生成器改编自此:<a href="https://stackoverflow.com/a/8305463/1290420">https://stackoverflow.com/a/8305463/1290420</a></p>