我有默认格式的BLAST输出。我想使用正则表达式解析和提取我需要的信息。但是,在下面的行
Query= contig1
之间有一个空间' ='和' contig1'。所以在我的输出中它会在前面打印一个空格。怎么避免这个?下面是我的一段代码,
import re
output = open('out.txt','w')
with open('in','r') as f:
for line in f:
if re.search('Query=\s', line) != None:
line = line.strip()
line = line.rstrip()
line = line.strip('Query=\s')
line = line.rstrip('\s/')
query = line
print >> output,query
output.close()
输出应该如下所示,
contig1
答案 0 :(得分:2)
如果你只是在寻找像tag = value这样的行,你需要正则表达式吗?
tag,value=line.split('=')
if tag == 'Query':
print value.strip()
答案 1 :(得分:2)
您实际上可以使用返回的匹配来提取所需的值:
for line in f:
match = re.search('Query=\s?(.*)', line)
if match is not None:
query = match.groups()[0]
print >> output,query
我们在这里做的是:我们通过空格字符搜索Query =跟随(或不跟踪)并提取任何其他字符(使用match.groups()[0],因为我们在正则表达式中只有一个组)。
另外,根据数据的性质,您可能只想进行简单的字符串前缀匹配,如下例所示:
output = open('out.txt','w')
with open('in.txt','r') as f:
for line in f:
if line.startswith('Query='):
query = line.replace('Query=', '').strip()
print >> output,query
output.close()
在这种情况下,您根本不需要re模块。
答案 2 :(得分:0)
a='Query= conguie'
print "".join(a.split('Query='))
#output conguie
答案 3 :(得分:0)
print语句中的逗号会在参数之间添加空格。改变
print output,query
到
print "%s%s"%(output,query)