我有一个数据文件,我需要使用程序的输入,但我需要稍微调整格式。使用此方法:Extracting specific data from a file and writing it to another file我生成了一个如下所示的文件:
PITG_00002 2 397
PITG_00004 1 1275
PITG_00004 1397 1969
PITG_00005 200 1111
PITG_00005 1281 1646
PITG_00006 1 816
PITG_00009 2398 3276
PITG_00009 1536 1952
PITG_00010 1 537
我需要区分来自同一序列(第一列)的数据和来自不同序列的数据,方法是在序列之间添加一个独特的空白行,以便它看起来像:
PITG_00002 2 397
PITG_00004 1 1275
PITG_00004 1397 1969
PITG_00005 200 1111
PITG_00005 1281 1646
PITG_00006 1 816
PITG_00009 2398 3276
PITG_00009 1536 1952
PITG_00010 1 537
我用可用的程序/编码选项标记了这一点。非常感谢您给予的任何帮助,谢谢!
答案 0 :(得分:3)
$ perl -api -e 'print "\n" unless $seen{$F[0]}++ && $. > 1;' file.txt
答案 1 :(得分:1)
如果你想坚持使用Python。使用itertools.groupby
可以获得类似的结果>>> with open("test.txt") as fin, open("test.out","w") as fout:
groups = groupby(((e.split()[0],e) for e in fin),
key = operator.itemgetter(0))
for key, group in groups:
fout.write('\n'.join(e[1] for e in group))