我有一个文本文件,我想从以下三个列表中写入值:
a = [1,2,3]
b = [4,3,2]
c = [7,8,9]
格式:
a-b
c
所以文本文件中的排列如下:
1-4 2-3 3-2
7 8 9
我试过以下
for x,y,z in zip(a,b,c):
ofile.write("p%s-%s\n%s\t" %(x,y,z))
但是文本文件中的输出是这样排列的:
1-4
7 2-3
8 3-2
9
关于如何返回第一行并根据需要安排文本的任何建议都将是值得赞赏的。
答案 0 :(得分:2)
自己压缩a
和b
,写下该行,然后在下一行写c
:
ofile.write('\t'.join(['{}-{}'.format(*pair) for pair in zip(a, b)]) + '\n')
ofile.write('\t'.join(map(str, c)) + '\n')
这使用str.join()
在一行的值之间添加标签。
使用csv
module来处理将值转换为字符串以及编写制表符和行分隔符会更容易:
writer = csv.writer(ofile, delimiter='\t')
writer.writerow(['{}-{}'.format(*pair) for pair in zip(a b)])
writer.writerow(c)