簡體   English   中英

如何使用Python轉換字符串中的每個字符

[英]How to Convert Each Character in a String using Python

我有一些字符序列,我想將它們轉換為指定的章程。

Seq = "AA" #This the sequence of characters

def complement (Seq):
    for nuc in Seq: # converting the sequence of characters into the desirable character 
        if nuc == 'A':
           comp = 'T'
    return comp

print "The complement of the Sequence AA is", complement(Seq)

當我嘗試運行上述代碼時,代碼無法識別整個字符序列,而是一次將其轉換為“ T”; 但是,對於輸入序列“ AA”,它僅執行一次“ T”

知道如何使代碼將序列中的每個“ A”字符轉換為“ T”嗎?

我感謝您的幫助!

您的腳本有一些錯誤。 首先,變量comp沒有初始值,並且僅返回一個“ T”(最后一個),因為每次在循環中找到“ A”時,另一個變量都會被替換。 據我了解,您正在嘗試在同一字符串中替換某些值。 我發現使用您要替換的字符來構建新字符串更容易。

這是我的腳本:

Seq = "AA" #This the sequence of characters

def complement (Seq):
    comp = ''
    for nuc in Seq: # converting the sequence of characters into the desirable character 
         if nuc == 'A':
             comp += 'T'
         else:
             comp += nuc
    return comp

print "The complement of the Sequence AA is", complement(Seq)

首先,使用string.maketrans來構建轉換表。 該函數采用兩個字符串,並構建一個表,該表將第一個字符串的每個字符映射到第二個字符串中的對應字符。 現在,您可以將該表傳遞給要translate的字符串的translate方法。

>>> import string
>>> table = string.maketrans("ATCG", "TAGC")
>>> 'AAAGTC'.translate(table)
'TTTCAG'

因為在這種情況下,您只需將'T'放到comp ,最后將其返回:

    if nuc == 'A':
       comp = 'T'
return comp

但是,可以使用str.replace()作為更Python的方式:

>>> Seq = "AA"
>>> Seq.replace('A','T')
'TT'

如果您想根據條件將每個字符轉換為特殊字符,則可以使用列表推導並join

>>> Seq = "AA"
>>> ''.join(['T' for i in Seq if i=='A'])
'TT'

同樣根據您的任務,您可以有其他選擇,例如使用regex。在這種情況下,python附帶了re.sub()函數來替換基於regex的字符串。

當然,它只會是T 因為您的循環只是將T附加到comp而不是連接。

嘗試這個:

Seq = "AA" #This the sequence of characters

def complement (Seq):
    comp = ""    <- declare empty string first
    for nuc in Seq:
        if nuc == 'A':
            comp += 'T'   <-- notice the +
    return comp

print "The complement of the Sequence AA is", complement(Seq)

是有關字符串連接和格式化的基本教程。

如果要獲得DNA序列的互補

complement = {"A":"T", "C":"G", "G":"C", "T":"A"}
seq = "ACGT"
complement_seq = "".join([complement[b] for b in seq])
complement_seq

這類似於

complement = {"A":"T", "C":"G", "G":"C", "T":"A"}
seq = "ACGT"
complement_seq = ""
for base in seq:
  complement_seq += complement[base]

complement_seq

你得到

TGCA

更好,使用biopython庫

from Bio.Seq import Seq
my_seq = Seq("ACGT")
my_seq.complement()

你得到

Seq('TGCA', Alphabet())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM