符号的第一次和最后一次出现(没有正则表达式的 python)



我正在处理来自"ACGT"字母表(基因序列(的字符串,在开头和结尾用字母"N"填充:

NNN...NNACGT...GGCTAANNNN...NNN

我想找到实际序列开始和结束的位置。使用正则表达式可以轻松完成,但我希望使用基本的 python 字符串操作有一个更简单的解决方案。您的建议将不胜感激。

要获取其余部分(从左右删除填充(,似乎您所需要的只是:

<YourString>.strip('N')

如果您需要查找索引,可以参考lstriprstrip

sStart = len(<YourString>)-len(<YourString>.lstrip('N'))+1
sEnd = len(<YourString>.rstrip('N'))

既然你提到你想找到"位置"。下面的代码将为您提供实际序列在字符串中开始和结束的位置。

s = 'NNNNAANNNN'
i, j = s.find(next((x for x in s if x != 'N'), None)), s.rfind(next((x for x in reversed(s) if x != 'N'), None))
print(i, j)
print(s[i:j+1])
#Output
4 5
A A

使用 strip((

s = "NNNNNACGTGGCTAANNNNNNN"
s = s.strip('N')
print(s)

最新更新