0

従業員に関するさまざまなデータを含む3つのtsvファイルがあります。これらのデータを、各ファイルに表示されている従業員の名前と名で結合できます。

各従業員のすべてのデータを1つのスプレッドシートに収集したいと思います。

(たとえば、一部の従業員はファイル番号2に含まれていませんが、ファイル番号3に含まれるため、列のコピー/貼り付けを行うことはできません)。

ですから、私は初心者ですが、スクリプトを使用すると、従業員(行)ごとに、新しいtsvファイルのファイルから可能な限り多くのデータを収集できると思います。

編集。私が持っているものの例(実際には、ファイルごとに約300行ありますが、一部の従業員はすべてのファイルに含まれているわけではありません)。

ファイル1

     john      hudson     03/03    male
     mary      kate       34/04    female
     harry     loup       01/01    male

ファイル2

     harry     loup     1200$

file3

    mary     kate     atlanta

私が欲しいもの:

    column1    colum2    column3     column4    column5    column6
    john       hudson     03/03      male
    mary       kate       34/04      female    atlanta
    harry      loup       01/01      male                 1200$

それは私に大いに役立つでしょう!

4

2 に答える 2

0

このPythonスクリプトを使用します。

import sys, re

r=[]
i = 0
res = []
for f in sys.argv[1:]:
    r.append({})
    for l in open(f):
        a,b = re.split('\s+', l.rstrip(), 1)
        r[i][a] = b
        if i == 0:
            res += [a]
    i += 1

for l in res:
    print l," ".join(r[k].get(l, '-') for k in range(i))

スクリプトは各ファイルを辞書にロードします(最初の列がキーとして使用されます)。次に、スクリプトは最初のファイルの最初の列の値を繰り返し処理し、(他のファイルから作成された)ディクショナリから対応する値を書き込みます。

使用例:

$ cat 1.txt 
user1 100
user2 200
user3 300
$ cat 2.txt 
user2 2200
user3 2300
$ cat 3.txt 
user1 1
user3 3
$ python 1.py [123].txt
user1 100 - 1
user2 200 2200 -
user3 300 2300 3
于 2012-07-01T14:50:30.280 に答える
0

SQLに精通している場合は、perl DBD::CSVモジュールを使用して簡単に作業を行うことができます。しかし、それはあなたがperlを書くことに慣れているかどうかにも依存します。

于 2012-07-01T15:19:07.710 に答える