输入文件是带有
的制表符分隔的unicode txta A e f m
b B g h
c C i j
b B k l
我希望通过第一列和第二列匹配并合并。所以我想得到
a A e f m
b B g h k l
c C i j
代码必须检测输入中的最大列数。由于在这个例子中它是5,所以从第6列放入“k l”。
实际上,当他们都是数字时,我几乎设法使用Matlab来做到这一点。但是哦,当它们是字母时,Matlab在处理unicode方面非常糟糕,虽然我读了关于如何在Matlab中处理unicode的stackoverflow我放弃了。所以我现在转向python。
使用excel VBA,它似乎可行,但由于数据量太大所以我猜测python会比Excel VBA更快(我猜对了吗?)
答案 0 :(得分:0)
我个人将输入/处理逻辑与输出/格式化逻辑分开。
def match_merge(filename):
with open(filename) as f:
c = csv.reader(f,delimiter='\t')
d = defaultdict(list)
for line in c:
d[(line[0],line[1])].append(line[2:])
return d
演示:
In [17]: import pprint
In [18]: pprint.pprint(match_merge('tabdelim'))
{('a', 'A'): [['e', 'f', 'm']],
('b', 'B'): [['g', 'h'], ['k', 'l']],
('c', 'C'): [['i', 'j']]}
您可以dict
(defaultdict
实际上)match_merge
返回并将其写入制表符分隔文件中。由于我并不真正了解您的输出需求,因此我省略了该部分。