<p>我这里有两个DNA样本:</p>
<pre><code>text = "AANGCTWCAAGGT"
text1= "AAGTTTCG"
</code></pre>
<p>文本包含不明确的核苷酸“N”和“W”,因为它们不是“AGCT”(注意:任何不是“AGCT”或“AGCT”的核苷酸都被认为是不明确的)<br/>
这就是text1的目的,它不包含任何模棱两可的核苷酸,我想比较text1和text1,用text1替换text1中模棱两可的核苷酸。所以‘N’=‘G’和‘W’=‘C’,基于它们的位置。你知道吗</p>
<p>我的代码:</p>
<pre><code>text = "AANGCTWCAAGGT"
text1= "AAGTTTCG"
m = len(text)
n = len(text1)
for j in range(n)[1:]:
if 'A' not in text[j] and 'G' not in text[j]and 'C' not in text[j]and 'T' not in text[j]and 'a' not in text[j]and 'g' not in text[j]and 'c' not in text[j]and 't' not in text[j]:
newtext = text.replace(text[j], text1[j])
print(newtext)
</code></pre>
<p>输出:</p>
<pre><code>In[89]:runfile('C:/Users/..code')
AAGGCTWCAAGGT
AANGCTCCAAGGT
</code></pre>
<p>期望输出:</p>
<pre><code>AAGGCTCCAAGGT
</code></pre>
<p>我想我遗漏了什么,也许是另一个循环?我不确定如何修复代码,以便将替换项合并到最终输出中。你知道吗</p>
<p>从我在评论和问题中了解到的情况来看,您可能会喜欢这样的东西(与yurib的答案的算法相同,但在一个循环中):</p>
<pre><code>text = "AANGCTWCAAGGT"
text1= "AAGTTTCG"
res = ""
for i,c in enumerate(text):
if c.lower() in 'agct':
res = res +c
else:
res = res + text1[i]
</code></pre>