繁体   English   中英

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

[英]First and last occurence of a symbol (python without regex)

我正在处理来自“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

使用条带()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM