如何用Python从多个.txt文件中提取文本?
我刚开始学习编程和使用Python,没找到能完全回答我问题的内容。简单来说,我想从大约150个不同的.txt文件中提取某个特定的部分,然后把这些部分收集到一个单独的.txt文件里。
每个.txt文件里都有DNA序列对齐的数据,每个文件基本上会列出几十种不同的可能序列。我只对每个文件中的一个特定序列感兴趣,我想用一个脚本把这个序列从所有文件中提取出来,然后合并成一个文件,这样我就可以把这个文件放进一个程序里,把序列转换成蛋白质代码。其实我想避免的就是一个一个地打开150个文件,然后手动复制粘贴我想要的序列。
有没有人知道我该怎么做呢?谢谢!
编辑:我试着上传一个文本文件的图片,但显然我的“声望”不够。
编辑2:大家好,抱歉没能早点回复这个。我已经上传了图片,这里是链接: https://i.stack.imgur.com/us9JA.jpg
1 个回答
0
我假设你有150个fasta文件,每个文件里都有你想要的序列ID。你可以使用Biopython这个模块来处理这些文件,把所有150个文件放在一个文件夹里,比如"C:\seq_folder"(这个文件夹里不能有其他文件,而且txt文件不能打开)。
import os
from Bio import SeqIO
from Bio.Seq import Seq
os.chdir('C:\\seq_folder') # changing working directory, to make it easy for python finding txt files
seq_id=x # the sequence id you want the sequence
txt_list=os.listdir('C:\\seq_folder')
result=open('result.fa','w')
for item in txt_list:
with open (item,'rU') as file:
for records in SeqIO.parse(file,'fasta'):
if records.id == seq_id:
txt.write('>'+records.id+'\n')
txt.write(str(records.seq)+'\n')
else:
continue
result.close()
这段代码会生成一个fasta文件,里面包含你想要的ID对应的序列,所有的序列都会放在'result.fa'这个文件里。你还可以使用Biopython模块把这些序列翻译成蛋白质。