from itertools import groupby
with open("file.dat") as f:
lines = [line.split() for line in f.readlines()]
filteredlines = [line for line in lines if len(line)]
for k, v in groupby(filteredlines, lambda x: x[0]):
print k + " " + " ".join([" ".join(velem[1:]) for velem in v])
print
import csv, itertools
with open("input.dat", "r") as f_input, open("output.csv", "wb") as f_output:
csv_input = csv.reader(f_input, delimiter=" ", skipinitialspace=True)
csv_output = csv.writer(f_output, delimiter=" ")
dat = [line for line in csv_input if len(line)]
for k, g in itertools.groupby(dat, lambda x: x[0]):
csv_output.writerow([k] + list(itertools.chain.from_iterable([value[1:] for value in g])))
解释-首先我们将文件分成几行,然后在空白处拆分行。在
然后我们使用itertools.groupby按第一个元素对行进行分组。在
然后,我们获取值,忽略第一个元素并在空格上联接,并在前面加上我们分组所依据的键和一个空格。在
Python CSV库既可以用来读取DAT文件,也可以创建CSV文件,如下所示:
它将生成如下输出文件:
^{pr2}$使用Python2.7进行测试
相关问题 更多 >
编程相关推荐