![](/img/trans.png)
[英]How to convert each character of a string into individual elements of list element in 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.