繁体   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