我有一个像这样的文件:
1 abc
1 def
2 ghi
3 jkl
3 mno
3 pqr
并希望从中生成这样的文件:
abc;def
jkl;mno
jkl;pqr
mno;pqr
我有以下代码:
with open('input.txt') as f1:
with open("output.csv", "wb") as f2:
cw = csv.writer(f2, delimiter=";")
for l in itertools.groupby((l.split() for l in f1), lambda x: x[0]):
grouped = set(x[1] for x in l[1]) # set avoids duplicate rows
for c in itertools.combinations(grouped, 2):
cw.writerow(c)
但是此代码不会向输出文件写入任何内容。我究竟做错了什么?
使用csv.writer;
在两个字符串之间插入是过分的杀伤力。将其删除后,您的代码即可正常工作。同样,出于开发和发布的目的,请使用可迭代的行而不是外部文件作为源,而print
不是write
用于输出。
import itertools
f1 = '''\
1 abc
1 def
2 ghi
3 jkl
3 mno
3 pqr
'''.splitlines()
for l in itertools.groupby((l.split() for l in f1), lambda x: x[0]):
grouped = set(x[1] for x in l[1]) # set avoids duplicate rows
for c in itertools.combinations(grouped, 2):
print('%s;%s' % c)
印刷
abc;def
pqr;mno
pqr;jkl
mno;jkl
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句