3

(非常に大きな、空白で区切られた、2 列の) テキスト ファイルからデータを Python 辞書に読み込みたいと考えています。forループでこれをやろうとしましたが、遅すぎました。numpy loadtxt を使用して構造体配列に読み取り、それを辞書に変換すると、はるかに高速になります。

data = np.loadtxt('filename.txt', dtype=[('field1', 'a20'), ('field2', int)], ndmin=1)
result = dict(data)

しかし、これは確かに最善の方法ではありませんか?何かアドバイス?

他に何かが必要な主な理由は、次のものが機能しないことです。

data[0]['field1'].split(sep='-')

次のエラー メッセージが表示されます。

TypeError: Type str doesn't support the buffer API

split() メソッドが存在する場合、なぜそれを使用できないのですか? 別の dtype を使用する必要がありますか? または、テキスト ファイルを読み取る別の (高速な) 方法はありますか? 私が見逃しているものは他にありますか?

バージョン: python バージョン 3.3.2 numpy バ​​ージョン 1.7.1

編集:data['field1'].split(sep='-')に 変更data[0]['field1'].split(sep='-')

4

2 に答える 2