假设我有一个制表符分隔的.text文件,如下所示:
我想折叠第1-5列,以便对于给定的唯一组合(即:abcde),与该唯一组合相关联的所有值(第6列;在这种情况下为组合abcde,相关值为f,g ,h)显示,而该唯一组合仅显示一次。
这是我想要完成的事情:
python脚本会是什么样的(如果可能的话)?
使用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.