2017-02-18 1 views
0

"KO"로 시작하는 줄을 생략하려고합니다. 그러나 코드를 실행할 때 출력 파일에 줄이 여전히 쓰여집니다. 나는 부울 표현식을 호출하여 "KO"가 geneData에 있는지 알아 보았습니다. 그리고 사실로 돌아옵니다. 나는 그 부분 만 붙어있다.특정 문자열로 시작하는 줄을 쓰지 마십시오.

#Read in hsa links 
hsa = [] 
with open ('/users/skylake/desktop/pathway-HSAs.txt', 'r') as file: 
    for line in file: 
     line = line.strip() 
     hsa.append(line) 

#Import Modules | Create KEGG Variable 
from bioservices.kegg import KEGG 
import re 
k = KEGG() 


##Data Parsing | Writing to File 

#for i in range(len(hsa)): 
data = k.get(hsa[2]) 
dict_data = k.parse(data) 

#Prep title of file 
nameData = re.sub("\[u'", "", str(dict_data['NAME'])) 
nameData = re.sub(" - Homo sapiens(human)']", "", nameData) 
f = open('/Users/Skylake/Desktop/pathway-info/' + nameData + '.txt' , 'w') 

#Prep gene data format 
geneData = re.sub("', u'", "',\n", str(dict_data['GENE'])) 
geneData = re.sub("': u'", ": ", geneData) 
geneData = re.sub("{u'", "", geneData) 
geneData = re.sub("'}", "", geneData) 
geneData = re.sub("\[KO", "\nKO", geneData) 
f.write("Genes\n") 
f.writelines([line for line in geneData if 'KO' not in line]) 


#Prep compound data format 
if 'COMPOUND' in dict_data: 
    compData = re.sub("\"", "'", str(dict_data['COMPOUND'])) 
    compData = re.sub("', u'", "\n", compData) 
    compData = re.sub("': u'", ": ", compData) 
    compData = re.sub("{u'", "", compData) 
    compData = re.sub("'}", "", compData) 
    f.write("\nCompounds\n") 
    f.write(compData) 

#Close file 

f.close() 
+0

문자열에있는 문자열과 같이 작동하지 않는다고 생각합니다. 분리하여 반복해야하지만 확실하지는 않습니다. –

답변

0

genedata 변수는 단일 문자열입니다. 그 위에 반복 할 때 문자열의 개별 문자를 처리합니다. line 변수의 이름이 잘못되었습니다. 두 문자로 된 'KO'문자열은이 단일 문자에 포함되어 있지 않으므로 부울 조건은 항상 참입니다.

입력 데이터 나 예상 출력 데이터가 없기 때문에 솔루션을 제안 할만큼 충분히 노력하고 있는지 알 수 없습니다.

관련 문제