如何从三个不同的电子表格中加入数据?

时间:2012-07-01 14:41:18

标签: unix

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

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

(我不能只复制/删除列,因为有些员工不是文件编号2,而是文件编号3)。

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

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

档案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$

这会对我有所帮助!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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