我有一份表单
lssample=[ [ [A,B],[C] ] ,[ [D],[E,F] ],[ [G,H],[I] ]]
以
形式将此内容写入文件的最有效方法是什么?A,B : C
D: E,F
G,H : I
请注意,长度对于子列表是任意的。以下代码仅以其形式写入列表(带括号)。是否有一种pythonic方式将其写入文件?
with open("output1.csv", "wb") as f:
writer = csv.writer(f)
writer.writerows(lssample)
答案 0 :(得分:6)
这似乎是一种非常简单的格式,只需滚动你自己的作家,如:
In [2]: data = [[['A','B'], ['C']], [['D'],['E','F']], [['G','H'], ['I']]]
In [3]: import io
In [4]: with io.StringIO() as f:
...: for record in data:
...: left, right = map(",".join, record)
...: f.write(f"{left} : {right}\n")
...: final = f.getvalue()
...:
In [5]: print(final)
A,B : C
D : E,F
G,H : I
注意,io.StringIO
只是一个内存缓冲区,其作用类似于文件,以便于说明。你会这样做:
with open("output1.txt", "w") as f:
...
当然,你不需要final = f.getvalue()
。另外,我使用的是Python 3.6 f-strings。如果你没有,你可以使用:
f.write("{} : {}".format(left, right)
答案 1 :(得分:3)
您正在寻找以下字符串(如果需要,在冒号周围添加空格):
output = "\n".join(','.join(head) + ":" + ','.join(tail) \
for head, tail in lssample)
print(output)
#A,B:C
#D:E,F
#G,H:I
只需将其写入文件即可。
答案 2 :(得分:3)
使用join
,
fp = open('file_name','w')
txt = '\n'.join([','.join(i)+ ' : ' + ','.join(j) for i,j in lssample])
fp.write(txt)
fp.close()
结果:
In [10]: print txt
A,B : C
D : E,F
G,H : I
答案 3 :(得分:1)
你也可以使用print
和一个小帮助函数来实现这一点(为了简洁起见,这也会减少名称查找):
with open('output.txt', 'w') as fout:
fmt = ','.join
for fst, snd in lssample:
print(fmt(fst), ':', fmt(snd), file=fout)