首页 > 解决方案 > 如何在 Python 代码中的 txt 文件中传递新行以将函数应用于不同的字符串?

问题描述

我有一个将氨基酸序列翻译成 DNA 序列的 Python 代码:

# Read the file and get the Peptide string
file = open('../Results/sample_dna2.txt', 'r')
dna = file.read()
#print(dna)

# Protein codon table
protein = {
  'A': ('GCC'),
  'B': ('GAC'),
  'C': ('TGC'),
  'D': ('GAC'),
  'E': ('GAG'),
  'F': ('TTC'),
  'G': ('GGC'),
  'H': ('CAC'),
  'I': ('ATC'),
  'K': ('AAG'),
  'L': ('CTG'),
  'M': ('ATG'),
  'N': ('AAC'),
  'P': ('CCC'),
  'Q': ('CAG'),
  'R': ('AGG'),
  'S': ('AGC'),
  'T': ('ACC'),
  'V': ('GTG'),
  'W': ('TGG',),
  'Y': ('TAC'),
  '*': ('TGA'),
}

dna_sequence = ""

# Generate DNA sequence
for i in range(0, len(dna)-(0+len(dna)%1), 1):
    dna_sequence += protein[dna[i:i+1]]

# Print the DNA sequence
print (dna_sequence)

当文本文件采用以下格式时,代码有效:

ABBBC

但是当文本文件是这样的时候代码不起作用:

ABBBC

ABBBC

我从 Python 收到以下错误:

KeyError Traceback (most recent call last) <ipython-input-35-8a6fd8cd8220>     in <module>

35 # Generate DNA sequence 
36 for i in range(0, len(dna)-(0+len(dna)%1), 1): --->
37 dna_sequence += protein[dna[i:i+1]] 
38 
39 # Print the DNA sequence KeyError: '\n'

如何修复代码以使其通过新行并翻译下一个肽序列?请注意,我对 Python 非常陌生,因此将不胜感激任何帮助。

我希望结果是这样的:

CTGATC

CTGATC

标签: pythonpython-3.xtext

解决方案


逐行读取文件,而不是同时读取所有文件,例如,

file = open('../Results/sample_dna2.txt', 'r')
file_lines = file.readlines()
dna = []
for f in file_lines:
    dna.append(f)

现在你有一个dna可以迭代的列表..

dna_sequence = ""
# Generate DNA sequence
for sequence in dna:
    for i in range(0, len(sequence)-(0+len(sequence)%1), 1):
        dna_sequence += protein[sequence[i:i+1]]

print (dna_sequnce)

推荐阅读