使用.replace替换python中的多个字符

时间:2017-01-24 20:31:24

标签: python string replace

所以我试图创建一个简单的程序,将一个短语解码为另一个短语。

这是我现在的代码

def mRNA_decode(phrase):
    newphrase = phrase.replace('A','U'),phrase.replace('T','A'),phrase.replace('C','G'),phrase.replace('G','C')
    return newphrase

所以基本上,如果我给出字符串'TATCGTTAATTCGAT',所需的输出将为'AUAGCAAUUAAGCUA'

相反,我得到('TUTCGTTUUTTCGUT', 'AAACGAAAAAACGAA', 'TATGGTTAATTGGAT', 'TATCCTTAATTCCAT'),这是我输入的短语,但它不是将更改全部添加到一个短语中,而是打印四种不同的翻译,所有只有一个字符在每次翻译中都有变化。

我如何更改代码以便翻译新短语,使其在具有所需输出的连续字符串上而不是具有四个不同的短语?

感谢您的帮助

4 个答案:

答案 0 :(得分:3)

您可以将str.translate()翻译表

一起使用
s = 'TATCGTTAATTCGAT'

s.translate(str.maketrans("ATCG", "UAGC"))
# 'AUAGCAAUUAAGCUA'

答案 1 :(得分:2)

所以作为一个fyi,记住顺序很重要。例如,如果您需要在字符串c中交换字符acat,则无法将c替换为a,然后ac。否则你会得到以下步骤:

cat - > aat - > cct

答案 2 :(得分:1)

简单地

def mRNA_decode(phrase):
    newphrase = phrase.replace('A','U').replace('T','A').replace('C','G').replace('G','C')
    return newphrase

由于str是不可变的,replace一直返回新的字符串,你只需要在新创建的字符串上调用next replace方法。

在您的问题中,您对同一个字符串进行了四次独立操作,因此每次调用会产生四个新字符串。你用逗号分隔它们,它被Python解释为元组声明。

UPD:正如评论中所述,您可以拨打replace而不是phrase.translate()次呼叫。你可以在其他答案中找到一个例子。

答案 3 :(得分:-1)

这是因为您每次都使用phrase变量替换,phrase的值不会更改,因此您有4种不同的输出

建议,改为使用翻译功能:

from string import maketrans
intab = "ATCG"
outtab = "UAGC"
trantab = maketrans(intab, outtab)
phrase.translate(trantab)