Windows 7에서 python-3.x로 작업하고 있습니다. 수백만 개의 문자로 구성된 문자열이 있습니다. 예를 들어 :
ATCGNNNATCGATNNNNNATCGANTCG
나는 범위를 얻고 싶다 N
. 여기에서 [[4,7], [13,18], [23,24]]
. N
방대한 데이터이고이 방법이 너무 느리기 때문에 s의 위치를 취한 다음 범위로 변환 할 수는 없습니다. 그렇게 쉬운 문제처럼 보이지만 실제로는 좋은 방법이 떠오르지 않습니다. 이를 수행하는 빠른 방법이 있습니까?
이것이 수백만 개의 문자열로 어떻게 확장되는지 확실하지 않지만 정규 표현식을 시도해 볼 수 있습니다 .
>>> import re
>>> data = "ATCGNNNATCGATNNNNNATCGANTCG"
>>> spans = (g.span() for g in re.finditer('N+', data))
>>> list(spans)
[(4, 7), (13, 18), (23, 24)]
업데이트 : A, C, G, T 및 N의 무작위로 생성 된 문자열로 이것을 시도했습니다. 1,000,000 자의 list(spans)
경우 1 초 미만이 걸리고 10,000,000의 경우 완전히 새로운 컴퓨터에서 약 10 초가 걸립니다. 약 1,600,000 개의 N 그룹.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다