[英]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.