python3.x系です。

以下のようなテキストファイル(original.txt)があります。タブ区切りです。

original.txt

aaa data1_1 data1_2 data1_3
aaa data2_1 data2_2 data2_3
bbb data3_1 data3_2 data3_3
ccc data4_1 data4_2 data4_3

これを以下の3つのテキストファイルに分割したいのです。

div001.txt

aaa data1_1 data1_2 data1_3
aaa data2_1 data2_2 data2_3

div002.txt

bbb data3_1 data3_2 data3_3

div003.txt

ccc data4_1 data4_2 data4_3

・1列目のデータをキーワードにしてファイルを分割したい。
・1列目のデータ(=分割された後にできるファイル数)はこの例だと3つだが、何個であっても対応できるようにしたい

そこで、以下の部分までコードを考えました。

import re

with open("original.txt", "r") as fh_input:
    query_key = "" #キーワード
    list = [] #入力データの配列
    saved_key = "tekitou" #初期キーワード
    filenumber = 1 #ファイル番号用
    filename = "" #ファイル名用

    for line in fh_input:
        line_m = re.sub('[\r\n]+$', '', line)#改行コードの除去
        list = line_m.split('\t')#タブ区切りでリスト化
        query_key = list[0]

        if saved_key != query_key:
            filenumber_padded = '{0:03d}'.format(filenumber)
            filename = "div" + filenumber_padded + ".txt"
            filenumber += 1

            「何かのファイルハンドル」 = open(filename, "w")
            #ここに「filename」への書き込み処理がはいる

        saved_key = query_key

とここまで書いて、ファイルハンドルを動的に(=キーワードの種類数に合わせて自動的に)生成する方法を思いつかず、行き詰まりました。ファイルハンドルが動的に複数生成できれば、複数のファイルを開いて書き込むことができます。perlだと「ファイルハンドルとして未定義のスカラ変数が与えられたとき、ファイルハンドルを自動的に生成し変数に設定する」ということで、これを用いて動的に生成できるようです。しかし、pythonはどうも違うらしいのです。

そこで、ここから先どうしたらよいかお知恵を拝借したいのです。また、以上の方法だと、仮にファイルハンドルを動的に生成できたとしても、ファイルをいくつも同時に開きっぱなしにすることになる・・・かな。すると、original.txtが大きい場合、メモリに負担になりそうな気がします。この点もあわせてお知恵をお借りできればと思います。

よろしくおねがいします。