如何使python识别启动,结束字符串中间



我需要将2个序列(或仅2个文件)与

进行比较

seq1 .tt..gcct ..

seq2 tat.cgccac。

     2 45   9

2、4、5、9是存在差异的位置,我需要计算它们之间的距离。我有脚本可以比较2个序列和计数距离,但是

问题1)我想在序列的开头和结尾忽略点(。),但要考虑到中间的点。您如何在Python中做到这一点?该任务如何称呼?

问题2)如果我有一个差异在另一个差异,我需要将其作为一个区块,因此2-4距离将被忽略2、2-5,4-9签名,5-9计数和2--9将是7(将计数4和5为两个),我该怎么做?

所以我想出了一种方式,我想知道是否有更简单的东西。我将首先重新输入问题

如果您有清单 a = [1, 2, 3, 7, 10, 11, 12, 18, 20, 21]

问题1)如何删除仅连续值的领先和尾随组(由内部数字1和以21的尾声来定义),并以列表b = [7, 10, 11, 12, 18]结束。

问题 2)如何计算这些数字之间的距离和以列表c = [3,4]结束的距离(它将连续的数字视为一个块,并执行10-7 = 3,然后将连续数量视为块,然后将连续数量视为块,然后将连续的数字视为块。我的Solytion:

consec = [] for key, group in groupby(enumerate(a), lambda i: i[0] - i[1]): consec.append(list(map(itemgetter(1), group))) consecHead = consec[0] consecTail = consec[-1] if 1 in consecHead: consecHeadcheck = consecHead else: consecHeadcheck = [] if 21 in consecTail: consecTailcheck = consecTail else: consecTailcheck = [] b_prior = [x for x in polPos if x not in consecTailcheck] b = [x for x in b_prior if x not in consecHeadcheck] print(b) c = [] for i in range(len(b)): if int(int(b[i+1]) - int(b[i])) !=1: c.append(int(b[i+1]) - int(b[i]) print(c)

问题1)strip_seq1 = seq1 [1:len(seq)-1],而Seq2则在开始和结束时删除(。),同时将所有内容保留在之间。/p>

问题2)我不确定您的要求,对不起。

最新更新