首页 > 解决方案 > 我试图替换字符串中的所有字符,但它仍然没有按预期工作?

问题描述

作为函数的一小部分,此代码旨在将所有 'G' 替换为 'C',将所有 'T' 替换为 'A',反之亦然,但它仍然无法按预期工作,它仅替换了几个实例而不是替换他们全部。

dna1.txt = "GGTACGGATG"

file = open('dna1.txt')
            contents = file.read()
            replaced_contents = (contents.replace('G', 'C').replace('T', 'A',)
            .replace('A', 'T').replace('C', 'G'))
            print("Complement: {0}" .format(replaced_contents))

标签: pythonstringfilereplace

解决方案


你的替补正在与自己作斗争。

您的第一个替换通过并将所有“G”替换为“C”:

CCTACCCATC

然后您的第二次替换将通过并用“A”替换所有“T”:

CCAACCCAAC

然后第三次替换出现并用“T”交换所有“A”(包括您之前交换为“A”的“T”):

CCTTCCCTTC

最终替换扫过并用“G”交换所有“C”(包括您之前交换为“C”的“G”):

GGTTGGGTTG

这会起作用,但作为免责声明,这是我第一次看到 python,这可能不是一个好的代码!

contents = "GGTACGGATG"
replaced_contents = ""
for c in contents:
  if c == 'G':
    replaced_contents += 'C'
  elif c == 'C':
    replaced_contents += 'G'
  elif c == 'T':
    replaced_contents += 'A'
  elif c == 'A':
    replaced_contents += 'T'
  else:
    replaced_contents += c

print("Complement: {0}" .format(replaced_contents))

输出: Complement: CCATGCCTAC

也可以通过字典替换来做到这一点:

contents = "GGTACGGATG"
replacement = {
  'G':'C',
  'C':'G',
  'T':'A',
  'A':'T'
}
replaced_contents = ""
for c in contents:
    replaced_contents += replacement.get(c) or c

print("Complement: {0}" .format(replaced_contents))

推荐阅读