【问题标题】:Is there a way to select a certain letter in Python?有没有办法在 Python 中选择某个字母?
【发布时间】:2022-02-05 07:42:42
【问题描述】:

dna="AAGAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTCTTAGCGGGGCCACATCGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGTTACAGCGAGCATAC" 

所以基本上我只是想在dna 变量中选择字母“C”,然后用字母“G”替换它。

我有办法/功能吗?如能回答将不胜感激!

【问题讨论】:

  • 你需要做更多的事情来反转你的序列;)
  • 如果你首先替换所有C -> G 然后你将如何替换所有G -> C ?例如:"CGCG".replace('C', 'G') 结果为 "GGGG"

标签: python function variables selection letter


【解决方案1】:

使用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

【讨论】:

  • @KellyBundy -- 要创建表,您可以使用字符串实例(即 dna.maketrans...)或字符串类 str(即 str.maketrans...)。
  • @JohnnyMopp -- 好点,根据您的建议扩展了标签。
  • 爱你!祝你有美好的一天!
【解决方案2】:

你可以使用.replace():

dna=("AAGAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTCT"
"TAGCGGGGCCACATCGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGTTACAGCGAGCATAC")

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

【讨论】:

  • 非常感谢先生!
【解决方案3】:

如果你想用 Gs 替换 Cs,使用这个:

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

【讨论】:

  • 非常感谢先生!
【解决方案4】:

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

最好将链转换成列表,然后用 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 2021-03-11
    • 2021-11-04
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多