如何让 python 识别字符串的开始、结束中间

How to make python recognize start ,end middle of string

我需要将 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 算作两个),我该怎么做?

问题 1) strip_seq1 = seq1[1:len(seq)-1] 与 seq2 相同,删除开头和结尾的 (.),同时保留其间的所有内容。

问题 2) 抱歉,我不确定您的问题。

所以我想出了一个方法,我想知道是否有更简单的方法。 我会先重新输入问题

如果你有一个列表 a = [1, 2, 3, 7, 10, 11, 12, 18, 20, 21]

问题 1) 如何删除 连续值的前导和尾随组(前导定义为内部有数字 1,尾随有 21)并以 a 结尾列表 b = [7, 10, 11, 12, 18]

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

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)