用Python中dict 连续循环读取fasta格式的序列文件,并输出无回车和空行的fasta文件
时间: 2024-10-11 19:16:49 浏览: 46
Python用list或dict字段模式读取文件的方法
在Python中,你可以使用内置的`open()`函数打开一个Fasta格式的文件,然后通过逐行读取并解析内容,将每个序列存储到字典中。由于Fasta格式通常由两条信息组成,一条是序列表头(键),一条是对应的DNA/RNA或蛋白质序列(值),我们可以使用`if`条件判断和字符串连接来去除回车和空行。以下是一个简单的示例:
```python
def read_fasta(file_path):
with open(file_path, 'r') as file:
seq_dict = {}
current_seq = ''
for line in file:
if line.startswith('>'): # 如果开始新条目
if current_seq: # 如果当前有未结束的序列,添加到字典
seq_dict[current_seq] = current_seq.strip() # 去除首尾空格和回车
current_seq = line[1:].strip() # 新的序列表头,去掉'>'
else: # 否则,这是序列部分
current_seq += line.strip() # 添加到当前序列,去除非空字符
if current_seq: # 避免最后一个条目结束后忘记处理
seq_dict[current_seq] = current_seq.strip()
return seq_dict
# 使用函数
output_file = 'output.fasta' # 输出的无格式化Fasta文件名
seq_dict = read_fasta('input.fasta')
with open(output_file, 'w') as out:
for header, sequence in seq_dict.items():
out.write(f'>{header}\n{sequence}\n')
阅读全文