我正在处理来自"ACGT"字母表(基因序列(的字符串,在开头和结尾用字母"N"填充:
NNN...NNACGT...GGCTAANNNN...NNN
我想找到实际序列开始和结束的位置。使用正则表达式可以轻松完成,但我希望使用基本的 python 字符串操作有一个更简单的解决方案。您的建议将不胜感激。
要获取其余部分(从左右删除填充(,似乎您所需要的只是:
<YourString>.strip('N')
如果您需要查找索引,可以参考lstrip
和rstrip
:
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)