Скажем, у меня есть два списка: а = [1,2,3] б = [4,5,6] Я хочу записать их в текстовый файл, чтобы получить текстовый файл с двумя столбцами:
1 4
2 5
3 6
Скажем, у меня есть два списка: а = [1,2,3] б = [4,5,6] Я хочу записать их в текстовый файл, чтобы получить текстовый файл с двумя столбцами:
1 4
2 5
3 6
Просто 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
Вы можете использовать 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.
"+" В "w+" в команде open() означает "создать, если не существует"
Поле fmt в np.savetxt() в примере указывает, что числа являются целыми числами. Вы можете использовать другой формат для каждого столбца. Например, чтобы указать формат с плавающей запятой, с двумя десятичными цифрами, вы должны использовать '%.2f'
.
Попробуйте следующее:
file = open("list.txt", "w")
for index in range(len(a)):
file.write(str(a[index]) + " " + str(b[index]) + "\n")
file.close()
Простое решение - написать столбцы текста фиксированной ширины:
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
Вывод понятен как человеку, так и компьютеру, в то время как вкладки могут генерировать грязный вид, если точность значений изменяется по столбцу. Это также позволяет избежать загрузки отдельных библиотек csv
и numpy
, но работает как со списками, так и с массивами.
Он сразу же выходит, чтобы сохранить и уложить одинаковые длины векторов в столбцах. Для этого используйте функцию concatenate, затем вы можете складывать 3,4 или N векторов в столбцах, помеченных вкладкой.
np.savetxt('experimental_data_%s_%.1fa_%dp.txt'%(signal,angle,p_range), np.c_[DCS_exp, p_exp], delimiter="\t")
Вы можете написать два списка в текстовом файле, который содержит два столбца.
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