在python中如何替换和反转字符串?

2024-06-08 15:12:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这就是到目前为止我得到的,它并不是因为某种原因用G来代替C。为什么会这样?在

DNASeq=raw_input("Enter the DNA sequence here: ")
DNASeq=DNASeq.upper().replace(" ","")

reverse=DNASeq[::-1]

print reverse.replace('A','U').replace('T','A').replace('C','G').replace('G','C')

Tags: theinputrawhereupperreplacednareverse
3条回答

你已经完成了几乎正确的代码。 但这里有一件事你需要理解,首先你用G代替C,然后再用C代替G

.replace('C','G').replace('G','C')

只需从代码中删除.replace('G','C'),一切正常。在

以下是正确的代码:

DNASeq=raw_input("Enter the DNA sequence here: ")
DNASeq=DNASeq.upper().replace(" ","")

reverse=DNASeq[::-1]

print reverse.replace('A','U').replace('T','A').replace('C','G').replace('G','C')

正如已经指出的,问题是,您首先要用Gs替换所有的Cs。我想加入这种方法是因为我认为它是最有效的:

>>> complement = {'A':'U', 'G':'C', 'C':'G','T':'A'}
>>> seq = "GATTACA"
>>> "".join(complement[c] for c in seq)[::-1]
'UGUAAUC'
>>>

问题是,您将C替换为G,然后将{}替换为{}。一种简单的防止你从一个转到另一个的方法是将C替换为g,这样它就不会回到C,然后将结果大写:

gattaca="GATTACA"
rev = gattaca[::-1]
print rev.replace('A','u').replace('T','a').replace('C','g').replace('G','c').upper()

这将正确地输出UGUAAUC,而不是{},正如您的示例所做的那样。在

更新

不过,更具python风格的方法是:避免基于案例的黑客攻击,并且由于字符串无需扫描五次,因此效率更高,而且目的更为明显:

^{pr2}$

相关问题 更多 >