無料ブログはココログ

PythonでTSVファイルをJOINする

複数のTSVファイルをJOINする時に、UNIX/LINUXコマンドのJOINを何回もすれば実現できます。でも、それなりに面倒臭いですし、出力をハンドリングするにはawkか何かを組み合わせないと行けません。そこで、お勉強がてらPythonで作ってみました(Python 2.7.1 on Mac)。

仕様:
第1カラムをキーとして引数で指定されたTSVファイルをJOINする。結果はキーでソートしてTSVを標準出力する。

応用:
デリミタを削除してcsv対応するなり、出力をSQL分にするなり、ご自由にお使いください。

感想:
Pythonは、インストールしなくても使える環境が多いので便利ですね。ちょこちょこRubyとの違いを感じますが、できることはあまり変わりませんね。比較のページもあるなど、いろいろな言語が使われる様になっていると思いました。
(参考:配列操作の比較表: Ruby, Python, JavaScript, Perl, C++



#!/usr/bin/python
import sys
import csv

files = sys.argv
files.pop(0)

out_data = {}

for in_file in files:
    tsv = csv.reader(file(in_file, 'r'), delimiter = '\t')
    for line in tsv:
        key = line[0]
        line.pop(0)
        if key not in out_data:
            out_data[key] = [key]
        out_data[key].extend(line)
for key in sorted(out_data.keys()):
    print '\t'.join(out_data[key])