写个函数,用来批量输出字符串上多次匹配的位置信息

def findplace(str,seq):
	import re
	place = []
	end = 0
	pattern = re.compile(seq)
	while(1):
		a = pattern.search(str,end)
		if a  == None:
			return place
			break
		else:
			position  = a.span()
			place.append(position)
			end = position[1]

使用方式:

position = findplace(seq1,"N+")

seq1为字符串,本次全部脚本是为了找出一个fasta序列中的全部NNN所在的位置信息

现将全部脚本列下

#find the place of N
import sys,re
f1 = open(sys.argv[1],'r')
seq1 = ""
for i in f1:
	if re.match(">",i):
		continue
	else:
		i=i.strip("\n")
		seq1 = seq1+i
#print(seq1[97865:97983])
def findplace(str,seq):
	import re
	place = []
	end = 0
	pattern = re.compile(seq)
	while(1):
		a = pattern.search(str,end)
		if a  == None:
			return place
			break
		else:
			position  = a.span()
			place.append(position)
			end = position[1]

position = findplace(seq1,"N+")
#print(position)
for i in range(len(position)):
	num = i+1
	st = position[i][0]+1
	ed = position[i][1]
	le = ed - st +1
	print("loc{}\t{}\t{}\t{}".format(num,st,ed,le))

使用脚本的命令为:

python find_N.py data\out.masked.fasta > position.xlsx

输出的结果为:

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值