3

次の形式の大きなタブ区切りのcsvファイルがあります。

#mirbase_acc    mirna_name  gene_id gene_symbol transcript_id   ext_transcript_id   mirna_alignment gene_alignment  mirna_start mirna_end   gene_start  gene_end    genome_coordinates  conservation    align_score seed_cat    energy  mirsvr_score

私ができるようにしたいのは、行を繰り返し処理し、「gene_id」フィールドのデータ(文字列)に基づいて項目を選択してから、それらの行を新しいファイルにコピーすることです。

私はPythonの初心者で、足を濡らすのに良い方法だと思いましたが、見た目よりも難しいです!私はcsvパッケージを使用してファイルを操作し、dictreaderとdictwriterを使用して基本的なものを読み書きしようとしています。誰かが反復検索の側面のテンプレートを考え出すのを手伝ってくれるなら、私は大いに感謝するでしょう。これまでのところ:

import csv

f = open("C:\Documents and Settings\Administrator\Desktop\miRNA Scripting\mirna_predictions_short.txt", "r")
reader = csv.DictReader(f, delimiter='\t')
writer = open("output.txt",'wb')
writer = csv.writer(writer, delimiter='\t')

次に、反復ビット、bleurgh:

for row in reader:
    if reader.gene_id == str(CG11710):
        writer.writerow

これは明らかに機能しません。これを構造化するためのより良い方法に関するアイデアはありますか?

4

2 に答える 2

4

もうすぐです!コードはほぼ正しいです:)


dictへのアクセスは次のようになります。

some_dict['some_key']

それ以外の:

some_object.some_attribute

文字列の作成はではなく、次のstr(...)ような引用符で行われます。CG11710


あなたの場合:

for row in reader:
    if row['gene_id'] == 'CG11710':
        writer.writerow(row)
于 2012-07-20T18:05:06.690 に答える
0

Pythonの辞書は、dictionary['key']のようにアドレス指定されます。したがって、あなたにとっては、reader['gene_id']になります。また、文字列は、str(text)とは異なり、引用符「text」で宣言されます。str(text)は、変数テキストに格納されているものをすべて文字列にキャストしようとしますが、これは私が望むものではありません。また、writer.writerowは関数であり、関数は引数を取るため、writer.writerow(row)を実行する必要があります。

于 2012-07-20T18:06:37.673 に答える