4 개 세트가 들어있는 두 개의 데이터 파일이 있습니다. 두 번째 파일에 포함 된 4 줄 집합을 추출해야합니다 모든 집합의 첫 번째 줄의 일부가 일치하는 경우.python - 일치하는 문자열 다음에 여러 줄을 추출합니다.
다음input1.txt
@abcde:134/1
JDOIJDEJAKJ
content1
content2
input2.txt
@abcde:134/2
JKDJFLJSIEF
content3
content4
@abcde:135/2
KFJKDJFKLDJ
content5
content6
같이 출력이 보일 것입니다 것입니다 : 여기
는 입력 데이터의 예입니다 ... 여기output.txt
@abcde:134/2
JKDJFLJSIEF
content3
content4
이 코드를 작성하려고 시도한은
import sys
filename1 = sys.argv[1] #input1.txt
filename2 = sys.argv[2] #input2.txt
F = open(filename1, 'r')
R = open(filename2, 'r')
def output(input1, input2):
for line in input1:
if "@" in line:
for line2 in input2:
if line[:-1] in line2:
for i in range(4):
print next(input2)
output = output(F, R)
write(output)
나는 알아낼 수없는 next() 구문이 잘못되었습니다. 누군가 내 코드를 수정하거나 나에게 줄 수 있다면 기쁠 것입니다. 이 작품을 만드는 방법에 관한 ips.
=== 편집 :== 좋아요, 나는 아래의 의견 (감사합니다)에서 제안 된 솔루션을 구현할 수 있었다고 생각합니다. 나는 이제 원격 우분투 서버에 ssh로 연결된 터미널 세션에서 코드를 실행 중이다. 다음은 코드가 지금 보이는 모습입니다.
filename1 = sys.argv[1] #input file 1
filename2 = sys.argv[2] #input file 2 (some lines of which will be in the output)
F = open(filename1, 'r')
R = open(filename2, 'r')
def output(input1, input2):
for line in input1:
input2.seek(0)
if "@" in line:
for line2 in input2:
if line[:-2] in line2:
for i in range(4):
out = next(input2)
print out
return
output (F, R)
그때 나는이 명령을 실행 (이번에는 내가 python2.7를 실행하고) : 내가 경고를하지 않는
python fetch_reverse.py test1.fq test.fq > test2.fq
을하지만, 출력 파일이 비어 있습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
python3을 사용하고 있습니까? 이 경우'print'는 함수이며 괄호'print (next (reverse))'가 필요합니다. 이 기능은 python2에서도 작동합니다. – Bakuriu
당신의 함수'output()'는 어떤 것도'return '하지 않는다는 것과 그 이름을 호출 할 때 그 이름을 그려 보려고한다는 것을 알아 두십시오. 또한 결과를 일부 컨테이너에 저장하고 호출자에게 다시 전달한 다음 변수 이름을 변경해야합니다. – jonrsharpe
또 다른주의 사항 :'input1'을 한 번 반복하면서 매치 할 때마다'input2'를 반복하려고합니다. ''@ "in"이 참일 때'input2'를 모두 읽은 다음 파일 끝이 파일 끝 부분에 있으므로 다른 줄을 다시 읽지 않습니다. 당신의 코드는'input1' * first *에서 모든 일치하는'@'줄을 모으고, 대신에 일치하는 것을 검색하는'input2'를 반복 할 필요가 있습니다. –