SRR로 시작하는 문자열을 제거하고 '길이 = 다양한 길이의 다양한 숫자'로 끝내려고합니다. 이 번호에 대해 알고있는 것은 1에서 200까지 다양합니다 ...끝에 숫자가 다른 문자열을 제거하는 방법
나는 그것을 만드는 법을 모르며 어떤 방법이 가장 효율적인지는 알지 못합니다. 큰 파일 (> 10GB)을 조작하고 있습니다. 마지막에 가까운 물건까지
import os
import re
f2 = open(r'path')
num = 0
while num < 200:
num = num+1
ident2 = re.compile('SRR.*?%d' %num, re.DOTALL)
stuff = f2.read()
for line in f2:
ident2.sub('',stuff)
코드는 더 이상 전체이지만, 그래 난 쓰기 않고 :
나는 테스트 할 200 일에서 모든 값에 대한 루프를하고 싶었다. 모든 숫자를 고려하여 문자열을 제거하는 식을 사용할 수 있는지 궁금합니다 ...모든 제안과 건설적인 비평은 크게 감사하겠습니다.
나는 텍스트 imput의 샘플을 추가하고 :
@SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50TTGCCTGCCTATCATTTTAGTGCCTGTGAGGTGGAGATGTGAGGATCAGT+SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50hhhhhhhhhhghhghhhhhfhhhhhfffffe`ee[`X]b[d[ed`[Y[^Y
그것은 모두 한 줄 내가 비슷한 시퀀스의 많은 반복이있다.
와우, 감사 : 내가 명시 적으로
length=
매개 변수를 포함 것, 당신의 게시 된 샘플에서: 당신은 표현의 끝에
\b
경계 앵커를 추가해야 할 수 있습니다 \ d 그런 식으로 사용할 수 있습니다. – Fabienre.compile ('^ SRR. *? [012} {1,2} \ d \ b $', re.DOTALL) – blackwind
@blackwind : 숫자가 아닌 '000'패턴을 허용합니다. 그것은 일치해야만하는'199'를 허용하지 않습니다. –