如何在tab-delineated .txt文件中折叠类似的值?

时间:2018-01-04 17:03:49

标签: python grouping tab-delimited-text

假设我有一个tab标识的.txt文件,如下所示:

enter image description here

我希望折叠第1-5列,以便对于给定的唯一组合(即:abcde),与该唯一组合关联的所有值(第6列;在本例中为组合abcde,相关值为显示f,g,h),同时该唯一组合仅显示一次。

这就是我想要完成的事情:

enter image description here

python脚本的目的是什么(如果可能的话)?

1 个答案:

答案 0 :(得分:1)

使用Python的groupby函数来查找前5个单元格中的更改,如下所示:

from itertools import groupby
import csv

group = 5

with open('input.txt', 'rb') as f_input, open('output.txt', 'wb') as f_output:
    csv_input = csv.reader(f_input, delimiter='\t')
    csv_output = csv.writer(f_output, delimiter='\t')

    for k, g in groupby(csv_input, lambda x: x[:group]):
        csv_output.writerow(next(g))
        for row in g:
            csv_output.writerow([''] * group + row[group:])

给你一个输出文件:

a   b   c   d   e   f
                    f
                    g
                    h
1   2   3   4   5   z
                    y
                    t

注意:这假设您使用的是Python 2.x