0

我有 3 个 tsv 文件,其中包含有关我员工的不同数据。我可以将这些数据与出现在每个文件中的员工的姓氏和名字结合起来。

我想在一个电子表格中收集每个员工的所有数据。

(我不能只复制/过去列,因为某些员工不在文件号 2 中,而是在文件号 3 中)。

所以我认为 - 我是一个初学者 - 一个脚本可以做到这一点,对于每个员工(一行),从新 tsv 文件中的文件中收集尽可能多的数据。

编辑。我所拥有的示例(实际上,每个文件大约有 300 行,一些员工不在所有文件中)。

文件 1

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

文件 2

     harry     loup     1200$

文件 3

    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

如果您熟悉 SQL,那么您可以使用 perl DBD::CSV模块轻松完成这项工作。但这也取决于您是否愿意编写 perl。

于 2012-07-01T15:19:07.710 回答
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 回答