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])
« [#TiDD] 標準化のトレードオフ その8 - チケット駆動開発はソリューションライブラリ - | トップページ | [#TiDD] 工程名のチケットがアンチパターンである3つの理由 »
「Python」カテゴリの記事
- PythonでTSVファイルをJOINする(2014.02.16)
« [#TiDD] 標準化のトレードオフ その8 - チケット駆動開発はソリューションライブラリ - | トップページ | [#TiDD] 工程名のチケットがアンチパターンである3つの理由 »
コメント