2016-08-11 51 views
0

我正在編寫一個分析和解析共有序列的程序。我已經成功地進行了分析和解析工作,程序告訴我兩個序列是否一致。在字符串中打印不一致的位置

我想添加一個額外的功能,如果兩個序列不一致,我希望它告訴我兩個序列不匹配的位置。

例如:

如果序列1:GACTTTTTACTTTTTTG &序列2:GACCTTTTACTTTTTTG

它會告訴我的序列1是不是一致,以序列2,但我也希望它告訴我不一致的位置是第4個字母。

我怎樣才能讓程序做到這一點?

這裏是我到目前爲止的代碼:

for (h1,s1),(h2,s2) in combinations(zip(header,sequence),2): 
    if s1[start:stop]==s2[start:stop]: 
     print h1, "is concordant to", h2 
    else: 
     print h1, "is not concordant to", h2 
     nonconcordance_position=[] 
     nonconcordance_position.append(idx2[n-1]) 
     print "position of non concordance:", nonconcordance_position 

當我運行這個它的工作原理,但它並沒有給出正確的位置。

+0

如果一致性意味着字符串是否是完全一樣的,那麼這是一樣的尋找兩個字符串的公共前綴。如果是這樣,http://stackoverflow.com/a/6718435/85337是一個很好的方法來做到這一點。特別使用'os.path.commonprefix'。 –

回答

0

在您的else語句中,您可以遍歷序列字符串,然後在字符不匹配時打印索引。

喜歡的東西:

else: 
    for i in range(0, len(h1)): 
     if h1[i] == h2[i]: 
      continue 
     else: 
      print i 
      break 
+0

我該怎麼做? –

+0

已更新的答案。 –