我正在尝试使用re
解析XML格式的BLAST输出,以前从未这样做过,下面是我的代码。
但是,由于某些匹配有时会Hsp_num
多次,因此query_from
和query_to
的结果会更多,query_len
的结果会更少,如何指定对于它,Hsp_num
超过1 print query_len
?谢谢
import re
output = open('result.txt','w')
n = 0
with open('file.xml','r') as xml:
for line in xml:
if re.search('<Hsp_query-from>', line) != None:
line = line.strip()
line = line.rstrip()
line = line.strip('<Hsp_query-from>')
line = line.rstrip('</')
query_from = line
if re.search('<Hsp_query-to>', line) != None:
line = line.strip()
line = line.rstrip()
line = line.strip('<Hsp_query-to>')
line = line.rstrip('</')
query_to = line
if re.search('<Hsp_num>', line) != None:
line = line.strip()
line = line.rstrip()
line = line.strip('<Hsp_num>')
line = line.rstrip('</')
Hsp_num = line
print >> output, Hsp_num+'\t'+query_from+'\t'+query_to
output.close()
我在一个单独的文件中做了query_len
,因为它没有用。
with open('file.xml','r') as xml:
for line in xml:
if re.search('<Iteration_query-len>', line) != None:
line = line.strip()
line = line.rstrip()
line = line.strip('<Iteration_query-len>')
line = line.rstrip('</')
query_len = line
答案 0 :(得分:2)
您熟悉Biopython吗?它的Bio.Blast.NCBIXML
模块可能就是您所需要的。 Tutorial and Cookbook的Chapter 7是关于BLAST的,第7.3节涉及解析。您将了解它是如何工作的,并且比使用正则表达式解析XML要容易得多,这只会导致眼泪和mental breakdowns。