通过公共列合并两个表

时间:2012-12-18 11:52:19

标签: python file-io python-2.7 file-handling

假设我有两个文件,有数据

table1.txt内容

avvd, 1234, ufgh
klpn, 5678, oppr
srtv, 9abc, pxyz

table2.txt内容

abcd, 1234, efgh
klmn, 5678, opqr
stuv, 9abc, wxyz

现在我想合并它们,因为它们的第二列是相同的,并显示结果。

如果table1.txt和table2.txt列相同,则所需的输出是合并两个表并使它们成为一个并在输出中显示它们

avvd, 1234, ufgh, abcd, efgh
klpn, 5678, oppr, klmn, opqr
srtv, 9abc, pxyz, stuv, wxyz

1 个答案:

答案 0 :(得分:1)

#input

file1 = open('1.txt', 'r')
file2 = open('2.txt', 'r')
matrix1 = [line.rstrip().split(', ') for line in file1.readlines()]
matrix2 = [line.rstrip().split(', ') for line in file2.readlines()]
file1.close()
file2.close()

#combine

t_matrix1 = [[r[col] for r in matrix1] for col in range(len(matrix1[0]))]
t_matrix2 = [[r[col] for r in matrix2] for col in range(len(matrix2[0]))]
final_t_matrix = []
for i in (t_matrix1 + t_matrix2):
    if i not in final_t_matrix:
        final_t_matrix.append(i)
final_matrix = [[r[col] for r in final_t_matrix] for col in range(len(final_t_matrix[0]))]

#output

outfile = open('out.txt', 'w')
for i in final_matrix:               
    for j in i[:-1]:
        outfile.write(j+', ')
    outfile.write(i[-1]+'\n')
outfile.close()