python用str方法替换string中的多个元素

时间:2014-12-26 16:49:02

标签: python string function if-statement formatting

您好我正在学习用python编程。我正在尝试编写一个带有一串DNA并返回赞美的函数,我一直在尝试解决这个问题,并查看了python文档,但无法解决这个问题。我已经为函数编写了doc字符串,因此您可以看到答案应该是什么样子。我在这个论坛上看到过类似的问题,但我无法理解答案。如果有人能够仅使用str格式化和循环/ if语句解释这一点,我将不胜感激,因为我还没有详细研究字典/列表。提前谢谢你

我试过str.replace但是无法让它为多个元素工作,尝试嵌套if语句,这也没有用。然后我尝试编写4个单独的for循环,但无济于事。

def get_complementary_sequence(dna):

    """ (str) -> str

    Return the DNA sequence that is complementary 
    to the given DNA sequence.

    >>> get_complementary_sequence('AT')
    TA
    >>> get_complementary_sequence('GCTTAA')
    CGAATT

    """

    for char in dna:
        if char == A:
            dna = dna.replace('A', 'T')
        elif  char == T:
            dna = dna.replace('T', 'A')
        # ...and so on

2 个答案:

答案 0 :(得分:4)

对于这样的问题,您可以使用string.maketrans(Python 3中的str.maketrans)与str.translate结合使用:

import string
table = string.maketrans('CGAT', 'GCTA')
print 'GCTTAA'.translate(table)
# outputs CGAATT

答案 1 :(得分:0)

您可以将每个字母映射到另一个字母。

您可能无需创建具有所有可能组合的转换表。

>>> M = {'A':'T', 'T':'A', 'C':'G', 'G':'C'}
>>> STR = 'CGAATT'
>>> S = "".join([M.get(c,c) for c in STR])
>>> S
'GCTTAA'

这是如何运作的:

# this returns a list of char according to your dict M
>>> L = [M.get(c,c) for c in STR]  
>>> L
['G', 'C', 'T', 'T', 'A', 'A']

方法join()返回一个字符串,其中序列的字符串元素已由str分隔符连接。

>>> str = "-"
>>> L = ['a','b','c']
>>> str.join(L)
'a-b-c'