Python:将两个列表写入两个列文本文件中

时间:2014-09-28 07:38:31

标签: list file python-3.x

说我有两个清单: A = [1,2,3] B = [4,5,6] 我想将它们写入文本文件,以便获得两列文本文件:

1 4
2 5
3 6

6 个答案:

答案 0 :(得分:22)

只需zip列表,并将其写入csv文件,并使用制表符作为分隔符:

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> zip(a,b)
[(1, 4), (2, 5), (3, 6)]
>>> import csv
>>> with open('text.csv', 'w') as f:
...    writer = csv.writer(f, delimiter='\t')
...    writer.writerows(zip(a,b))
...
>>> quit()
$ cat text.csv
1       4
2       5
3       6

答案 1 :(得分:14)

您可以使用numpy.savetxt(),这是numpy库中的便捷工具。 一个最小的例子如下:

import numpy as np

xarray = np.array([0,1,2,3,4,5])
yarray = np.array([0,10,20,30,40,50])
#here is your data, in two numpy arrays

data = np.array([xarray, yarray])
data = data.T
#here you transpose your data, so to have it in two columns

datafile_path = "/your/data/output/directory/datafile.txt"
with open(datafile_path, 'w+') as datafile_id:
#here you open the ascii file

    np.savetxt(datafile_id, data, fmt=['%d','%d'])
    #here the ascii file is written. 

open()命令中“w +”中的“+”表示“如果不存在则创建”

示例中np.savetxt()中的fmt字段指定数字是整数。 您可以为每列使用不同的格式。 例如。要指定浮点格式,使用2位十进制数字,您可以使用'%.2f'

答案 2 :(得分:5)

试试这个:

file = open("list.txt", "w")
for index in range(len(a)):
    file.write(str(a[index]) + " " + str(b[index]) + "\n")
file.close()

答案 3 :(得分:2)

一个简单的解决方案是编写固定宽度文本列:

a=[1,2,3]
b=[4,5,6]

col_format = "{:<5}" * 2 + "\n"   # 2 left-justfied columns with 5 character width

with open("foo.csv", 'w') as of:
    for x in zip(a, b):
        of.write(col_format.format(*x))

然后cat foo.csv产生:

1    4    
2    5    
3    6    

输出是人类和机器可读的,而如果值的精度沿列变化,则制表符可能会产生杂乱的输出。它还避免加载单独的csvnumpy库,但同时适用于列表和数组。

答案 4 :(得分:0)

它直接退出以保存并在列中堆叠相同的向量长度。为此,请使用连接函数,然后可以在由制表符分隔的列中堆叠3,4或N个向量。

np.savetxt('experimental_data_%s_%.1fa_%dp.txt'%(signal,angle,p_range), np.c_[DCS_exp, p_exp], delimiter="\t")

答案 5 :(得分:0)

您可以将两个列表写入包含两列的文本文件中。

a=[1,2,3]
b=[4,5,6] 
c = [a, b] 
with open("list1.txt", "w") as file:
    for x in zip(*c):
        file.write("{0}\t{1}\n".format(*x))

在文本文件中输出:

1   4
2   5
3   6