python - 如何在 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
解决方案
逐行读取文件,而不是同时读取所有文件,例如,
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)
推荐阅读
- java - redisTemplate 无法正确反序列化具有 Object 属性的 Object
- java - 获取存储中的 pdf 文件列表 - Mediastore android
- arrays - 算法设计问题挑战,不同长度的数组和计算作业的提前期
- r - 远程 Linux 服务器上的 RSelenium 和 Docker - 无法下载文件
- python - 如何自动更新 Gitab 存储库中的 csv 文件?
- java - 我可以从 XML 实例化处于暂停状态的 CronTriggerBean 吗?
- javascript - React JS:调用事件处理程序
- google-cloud-platform - Google Geocoding API 对 zip 进行排序以使其无法正常工作
- angular - 为什么 Angular 会覆盖原始变量?
- reactjs - 动态加载远程模块时Webpack 5模块联合缺少块