有没有办法select某个字母在Python?

Is there a way to select a certain letter in Python?

dna="AAGAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTCTTAGCGGGGCCACATCGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGTTACAGCGAGCATAC" 

所以基本上我试图 select 仅 dna 变量中的字母“C”,并简单地用字母“G”替换它。

有没有 way/function 我可以用这个?如果回答,将不胜感激!

您可以使用 .replace():

dna=("AAGAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTCT"
"TAGCGGGGCCACATCGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGTTACAGCGAGCATAC")

print(dna.replace("C", "G"))

如果您想用 Gs 替换 Cs,请使用:

dna.replace('C', 'G')

对于一般替换,您可以使用 str.replace(target, replacement) 但是问题上下文中的问题是,如果您将所有 C 替换为 G,您不知道要替换的 G 原本是什么到 C 以获得赞美。

最好将字符串转换为列表,然后用 case 块或 if/else 块逐一替换值:

def dna_compliment(strand):
  listStrand = list(strand)
  for i in range(len(listStrand)):
     if listStrand[i] == 'C':
        listStrand[i] = 'G'
     elif ...
     ...
  return ''.join(listStrand)

使用maketrans

因为你需要: C <-> G 和 A <-> T

含义 C -> G 和 G -> C,等等

例子

dna = "CGATCCGG" # dna sequence

# Create translation table
x = "CGAT"       # original letters
y = "GCTA"       # letters to map too
mytable = str.maketrans(x, y)  # Create translation table
                               # dna.maketrans(x, y) also works

# Apply table to dna string
translated = dna.translate(mytable)

# Show Original vs. translated
print(f"Original:\t{dna}\nTranslate:\t{translated}")
# Output:
Original:   CGATCCGG
Translate:  GCTAGGCC