이 질문은 반복되는 것으로 판단됩니다.하지만 잠시 동안 검색 한 결과 문안을 찾을 수있는 권리가없는 것 같습니다. 미안, 그것이 미리 반복되면!나중에 파일 python에서 조건이 충족 될 때까지 파일의 행에서 데이터를 유지하는 방법
나는 한 줄씩 읽는 파일에서 다음 정보를 인쇄하려고합니다.
gene1의 gene2 유전자 0 * gene1 gene2
내가 gene0, gene1, gene2을 얻을 수 있었다코드에서 ncRNA 유전자라고
*,하지만 난 문제가 노력을 데 조건 유전자 0 (data [2] = ncRNA)이 충족 될 때까지 gene-1과 gene-2를 어떻게 완충하는지 알아 내야한다.
즉, 이전 줄의 변수 정보가 필요하지만 현재 줄의 조건이 충족 될 때만 필요합니다. 나는 아래의 주석 처리 된 부분에서 그것에 대해 생각해 봤지만 더 좋은 방법이 있어야 할 것 같습니다 (중첩 된 엉망이 될 것입니다). 내가보고있는 파일은 gff 파일입니다.
조건이 충족 될 때까지 '이전 정보'에 대한 자리 표시자를 만드는 방법을 모르겠습니다.
import sys
import re
gff3 = sys.argv[1]
f = open(gff3, 'r')
ncRNAgene= False
fgene_count=0
while True:
line = f.readline()
if not line.startswith('#'):
data = line.strip().split("\t")
### this is not important to the question, just me dealing with the file format
try:
#my mis-guided attempts to get at this issue
#if data[2] == gene:
#line0 = f.readline()
#data0 = line.strip().split("\t")
#if data0[2] == gene
### the relevant information is in the third column of the line
if data[2] == 'ncRNA':
ncRNAgene = True
print "ncRNA gene:", line
while fgene_count <= 1 and ncRNAgene:
line = f.readline()
data2 = line.strip().split("\t")
if data2[2] == 'gene':
fgene_count = fgene_count + 1
print "this is gene %s : %s" %(fgene_count, line)
if fgene_count > 1:
fgene_count = 0
ncRNAgene= False
else:
continue
except IndexError:
if line.startswith('>'):
break
if not line:
break
f.close()
입니다 제가 같은 외모에 관심이 파일의 부분 : 나는 내가 관심이있는 물건 주위에 괄호를 넣어
211000022279165 FlyBase [엑손] (14) 1118.. -. 부모 = FBtr0300167; parent_type = ncRNA
211000022279165 FlyBase [유전자] 14 1118. -. CR42439, Alias = CR42439, Ontology_term = SO : 0000087, Dbxref = FlyBase_Annotation_IDs : CR42439, EntrezGene : 7354392, GenomeRNAi : 7354392
(ID = FBgn0259870)211000022279165 FlyBase [ncRNA] 14 1118. -. ID = FBtr0300167; NAME = 쓰 (인트) CR42439-RA, 부모 = FBgn0259870; 별칭 = CR42439-RA, Dbxref = FlyBase_Annotation_IDs : CR42439-RA, 나온 RefSeq : NR_026633는, score_text 약하게 지원 = 스코어 = 0
이 실제 들여 쓰기인가? 그로 인해 야기되는 많은 문제가 있기 때문에 먼저 해결해야합니다. 행이'#'으로 시작하더라도'data '를 사용하려고하는 코드가 있습니다. 이는 이전 행의'data'를 다시 사용한다는 것을 의미합니다. 'else'가'if'보다는'try'와 일치하는 것처럼 보이는데, 이것은 아무 의미도 없습니다. 등등. – abarnert
한편, 당신의 설명에서 당신이 원하는 것이 분명하지 않습니다. 설명에서 '유전자 -1'과 '유전자 -2'는 무엇입니까? – abarnert
의견을 보내 주셔서 감사합니다. 주석 처리 된 섹션은 실제 들여 쓰기가 아니며 나머지 부분을 해결할 수 있는지 확인합니다. 죄송합니다 어떤 유전자 1과 유전자 2가 명확하지 않습니다. 기본적으로 ncRNA (또는 gene0)를 둘러싸고있는 영역에 대한 '유전자'정보를 찾으려고합니다. – wubbina