<p>最直观的方法是使用bruteforce方法,即查找长度为<em>k</em>的每个子字符串(k-mer)(其中<em>k</em>从1到字符串本身的长度),并检查该子字符串是否在您的文件中。在</p>
<p>首先要定义一个函数(生成器),返回所有可能的k-mer:</p>
<pre><code>def all_kmers(sequence, k):
for i in range(len(sequence) - k + 1):
yield sequence[i:i + k]
</code></pre>
<p>现在是导入文件和三个字符串的时候了:</p>
^{pr2}$
<p>现在是时候摇滚了:</p>
<pre><code>print "In string 1:"
for k in range(len(string1)):
for kmer in all_kmers(string1, k):
if kmer in myWords:
print kmer
print "\nIn string 2:"
for k in range(len(string2)):
for kmer in all_kmers(string2, k):
if kmer in myWords:
print kmer
print "\nIn string 3:"
for k in range(len(string3)):
for kmer in all_kmers(string3, k):
if kmer in myWords:
print kmer
</code></pre>
<p>这样的代码返回:</p>
<pre><code>In string 1:
THE
DOG
In string 2:
DOG
THE
LINE
In string 3:
</code></pre>
<p><em>注意</em>:通过将三个字符串括在一个列表中,您可以避免3个单独的步骤,并将所有内容放入贯穿该列表的唯一循环中。<br/>
所以基本上在字符串定义之后,代码是:</p>
<pre><code>myList=[string1,string2,string3]
for l in range(len(myList)):
StringUnderTest=myList[l]
print "String #"+str(l+1)
for k in range(len(StringUnderTest)):
for kmer in all_kmers(StringUnderTest, k):
if kmer in myWords:
print kmer
print
</code></pre>
<p>这样的代码就会返回</p>
<pre><code>String #1
THE
DOG
String #2
DOG
THE
LINE
String #3
</code></pre>