2017-02-18 8 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

私は 'not in'が文字列のように動作するとは思わない。分割して反復する必要があるかもしれないが、確かではないかもしれない。 –

答えて

0

genedata変数は単一の文字列です。あなたがそれを反復するとき、文字列の個々の文字を扱っています。あなたのline変数はひどく間違っています。 2文字の文字列 'KO'は明らかにこれらの文字のいずれにも含まれていないため、ブール条件は常にTrueです。

入力データや予想される出力データがないため、解決策を提案するのに十分な努力をしているとは言えません。

関連する問題