【问题标题】:Simultaneous .replace functionality同时 .replace 功能
【发布时间】:2013-05-01 17:10:05
【问题描述】:

我已经将用户输入的 DNA 代码(A,T,G,C) 转换为 RNA 代码(A,U,G,C)。这很容易

RNA_Code=DNA_Code.replace('T','U')

现在我需要做的下一件事是将 RNA_Code 转换为它的互补链。这意味着我需要用 U 替换 A,用 A 替换 U,用 C 替换 G,用 G 替换 C,但都是同时进行的。

如果我说

RNA_Code.replace('A','U')
RNA_Code.replace('U','A')

它将所有的 As 转换为 Us,然后将所有 Us 转换为 As,但我只剩下所有的 As。

我需要它把AUUUGCGGCAAA 之类的东西转换成UAAACGCCGUUU

关于如何完成这项工作的任何想法?(3.3)

【问题讨论】:

标签: python string replace python-3.3 simultaneous


【解决方案1】:

使用翻译表:

RNA_compliment = {
    ord('A'): 'U', ord('U'): 'A',
    ord('G'): 'C', ord('C'): 'G'}

RNA_Code.translate(RNA_compliment)

str.translate() method 采用从代码点(数字)到替换字符的映射。 ord() function 为我们提供了给定角色的代码点,让您可以轻松构建地图。

演示:

>>> RNA_compliment = {ord('A'): 'U', ord('U'): 'A', ord('G'): 'C', ord('C'): 'G'}
>>> 'AUUUGCGGCAAA'.translate(RNA_compliment)
'UAAACGCCGUUU'

【讨论】:

  • @BlackVegetable:链接略有不同,这是 Python 3,但是是的。
  • 别忘了str.maketrans
【解决方案2】:

您可以使用映射字典:

In [1]: dic={"A":"U","U":"A","G":"C","C":"G"}

In [2]: strs="AUUUGCGGCAAA"

In [3]: "".join(dic[x] for x in strs)
Out[3]: 'UAAACGCCGUUU'

【讨论】:

    【解决方案3】:

    如果您还没有使用它,我建议您试试Biopython。它具有处理生物数据的各种功能,包括一个非常酷的Seq 对象。有一个 reverse_complement() 函数可以完成您想要做的事情,还有更多您可能还没有想到的功能。看看吧,它真的可以节省时间。

    >>> from Bio.Seq import Seq
    >>> from Bio.Alphabet import generic_dna
    >>> my_dna = Seq("AGTACACTGGT", generic_dna)
    >>> my_dna
    Seq('AGTACACTGGT', DNAAlphabet())
    >>> my_dna.complement()
    Seq('TCATGTGACCA', DNAAlphabet())
    >>> my_dna.reverse_complement()
    Seq('ACCAGTGTACT', DNAAlphabet())
    

    【讨论】:

      【解决方案4】:

      我有一个简单的解决方案:

      # get the sequence from the user:
      
      dna_seq = input("Please enter your sequence here: ")
      
      # make a for loop to read the seq one nucleotide at a time and add each one in a new variable
      
      compliment = ""
      
      for n in dna_seq:
      
          if n == "A":
              compliment = compliment + "T"
          elif n == "T":
              compliment = compliment + "A"
          elif n == "G":
              compliment = compliment + "C"
          elif n == "C":
              compliment = compliment + "G"
      
      print(compliment)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-05
        • 1970-01-01
        相关资源
        最近更新 更多