私はこのファイルを持っている:のpython:キーワードに基づいてファイルを分割
あなたはそこに2つのシリーズ(GSE11097とGSE11291)があり、そして私は、各シリーズの概要を望むここで見ることができますGSENumber Species Platform Sample Age Tissue Sex Count
GSE11097 Rat GPL1355 GSM280267 4 Liver Male Count
GSE11097 Rat GPL1355 GSM280268 4 Liver Female Count
GSE11097 Rat GPL1355 GSM280269 6 Liver Male Count
GSE11097 Rat GPL1355 GSM280409 6 Liver Female Count
GSE11291 Mouse GPL1261 GSM284967 5 Heart Male Count
GSE11291 Mouse GPL1261 GSM284968 5 Heart Male Count
GSE11291 Mouse GPL1261 GSM284969 5 Heart Male Count
GSE11291 Mouse GPL1261 GSM284970 5 Heart Male Count
GSE11291 Mouse GPL1261 GSM284975 10 Heart Male Count
GSE11291 Mouse GPL1261 GSM284976 10 Heart Male Count
GSE11291 Mouse GPL1261 GSM284987 5 Muscle Male Count
GSE11291 Mouse GPL1261 GSM284988 5 Muscle Female Count
GSE11291 Mouse GPL1261 GSM284989 30 Muscle Male Count
GSE11291 Mouse GPL1261 GSM284990 30 Muscle Male Count
GSE11291 Mouse GPL1261 GSM284991 30 Muscle Male Count
。ファイルに
- 読むと、すべてのリストを作る:
Series Species Platform AgeRange Tissue Sex Count GSE11097 Rat GPL1355 4-6 Liver Mixed Count GSE11291 Mouse GPL1261 5-10 Heart Male Count GSE11291 Mouse GPL1261 5-30 Muscle Mixed Count
だから私はこれを行うための一つの方法は次のようになります知っている:出力はそれぞれ「GSE」数のため、このような辞書でなければなりませんGSE番号。
- その後、再びファイルを読み込むと、GSE数に基づいて解析します。
私は二回、ファイル全体を読み込むためにきました(実際には、ここでの例よりもはるかに大きいファイル)
これを:
import sys list_of_series = list(set([line.strip().split()[0] for line in open(sys.argv[1])])) list_of_dicts = [] for each_list in list_of_series: temp_dict={"species":"","platform":"","age":[],"tissue":"","Sex":[],"Count":""} for line in open(sys.argv[1]).readlines()[1:]: line = line.strip().split() if line[0] == each_list: temp_dict["species"] = line[1] temp_dict["platform"] = line[2] temp_dict["age"].append(line[4]) temp_dict["tissue"] = line[5] temp_dict["sex"].append(line[6]) temp_dict["count"] = line[7]
は、私は、これは二つの方法で厄介だと思いますメソッドは、同じ単語を持つ同じ辞書エントリ上に書き換えを保持します。セックスに問題があります。また
は、私が 『それ以外の、辞書に入れて『混合「男性と女性の両方が、置けば』男性』または 『女性』を言いたい。
Iをこのコードを動作させることができますが、私はコードをより洗練された/もっとpythonicするためのクイックヒントについては疑問に思っていますか?
は、なぜあなたは二回、ファイルを読み込む必要がありますか? readlines()を使ってリストに一度だけ読み込んでから、複数回反復する必要がある場合は、リストを繰り返してください。 – Artagel
これは私が思うようなクエリ言語で行うべきことです。例えば。 mysqlにロードしてクエリを作成します。しかし、私は今 –