如何在 python 中替换和反转字符串?
Posted
技术标签:
【中文标题】如何在 python 中替换和反转字符串?【英文标题】:How do you replace and reverse a string in python? 【发布时间】:2016-10-25 04:26:13 【问题描述】:这就是我目前所拥有的,由于某种原因,它没有用 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')
【问题讨论】:
您将 C 替换为 G,然后将(所有)G 替换为 C。您期望什么?你的输出中会有很多 C,但没有 G。 【参考方案1】:问题是您将C
替换为G
,然后将G
替换为C
。防止您从一个到另一个的一种简单方法是将C
替换为g
,这样它就不会回到C
,然后将结果大写:
gattaca="GATTACA"
rev = gattaca[::-1]
print rev.replace('A','u').replace('T','a').replace('C','g').replace('G','c').upper()
这会正确输出UGUAAUC
,而不是像您的示例那样输出UCUAAUC
。
更新
不过,更 Pythonic 的方式,避免基于大小写的 hack,更高效,因为字符串不需要被扫描五次,并且目的更明显,将是:
from string import maketrans
transtab = maketrans("ATCG", "UAGC")
print rev.translate(transtab)
【讨论】:
是的,这对我来说应该从一开始就很明显!它也比我基于字典的方法快得多,在 python 3.5 ***.com/questions/34287893/…【参考方案2】:您已经完成了几乎正确的代码。 但这里您需要了解的一件事是首先将 C 替换为 G,然后再次将 G 替换为 C。
.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')
【讨论】:
【参考方案3】:正如已经指出的那样,问题在于您首先将所有 C 替换为 G。我想采用这种方法,因为我认为它是最有效的:
>>> complement = 'A':'U', 'G':'C', 'C':'G','T':'A'
>>> seq = "GATTACA"
>>> "".join(complement[c] for c in seq)[::-1]
'UGUAAUC'
>>>
【讨论】:
以上是关于如何在 python 中替换和反转字符串?的主要内容,如果未能解决你的问题,请参考以下文章