У меня есть список значений:
Вывод list_a:
list_a: [[[2.0, 4.0], [1.0, 2.0]], [[2.0, 4.0], [2.0, 3.0], [3.0, 1.0]], [[3.0, 6.0], [5.0, 5.0], [6.0, 4.0]], [[3.0, 6.0], [4.0, 7.0]], [[2.0, 4.0], [3.0, 6.0]]]
Я хочу экспортировать его в файл csv в определенном формате, чтобы каждый набор значений занимал ячейку в следующем формате:
(2.0; 4.0) | (1.0; 2.0)
(2.0; 4.0) | (2.0; 3.0) | (3.0; 1.0)
...
Знак "|" представляет собой разделение ячеек в одной строке (не включается в файл csv), а формат значений в ячейке должен состоять из круглых скобок и точки с запятой как таковой (X1; X2)
Я пробовал следующее, но получаю скобки и двоеточия:
with open('outputdata.csv', 'w') as outfile:
mywriter = csv.writer(outfile)
for d in result:
mywriter.writerow(d)
Любая помощь приветствуется!
Чтобы уточнить, ваш list_a - это не многомерный массив, а список списков.
Это результат list_a из python, и да, я исправил заголовок






Возможно, будет проще сгенерировать выходной файл без писателя:
SEP = ',' # Use any other separator here, if you want
with open('outputdata.csv', 'w') as outfile:
for line in list_a:
outfile.write(SEP.join(['({}; {})'.format(*pair) for pair in line]))
outfile.write("\n")
'|' представляет переход к другой ячейке в той же строке, это не должно быть записано в файл csv.
Это то, что вы использовали в своем примере. Вместо этого вы можете использовать запятую или любой другой символ.
Мне не нужен разделитель, мне нужно перемещать ячейки в одной строке и не помещать всю строку в одну ячейку.
Все ячейки в CSV-файле разделяются разделителем (обычно запятой). Так определяется ячейка. Если разделителей нет, значит ячеек нет. Я предлагаю вам попробовать ввести код, а затем открыть файл в Excel.
Вы можете попробовать написать csv самостоятельно, без какого-либо класса писателя:
with open('outputdata.csv', 'w') as f:
for vector in list_a:
len_ = len(vector)
for i, point in enumerate(vector):
f.write("({}; {})".format(*point))
# avoid writing the last pipe
if i != len_ - 1:
f.write(" | ")
f.write("\n")
Содержание:
(2.0; 4.0) | (1.0; 2.0)
(2.0; 4.0) | (2.0; 3.0) | (3.0; 1.0)
(3.0; 6.0) | (5.0; 5.0) | (6.0; 4.0)
(3.0; 6.0) | (4.0; 7.0)
(2.0; 4.0) | (3.0; 6.0)
попробуй это:
with open('outputdata.csv', 'w') as outfile:
mywriter = csv.writer(outfile)
for d in result:
row = ' | '.join(['(%f; %f)' % (t[0], t[1]) for t in d])
mywriter.writerow(d)
Каждый элемент каждой строки представляет собой массив из двух чисел с плавающей запятой, верно? Итак, мы используем строку формата для преобразования [2.0, 4.0] в "(2.0; 4.0)". Мы делаем это для каждого кортежа в строке. Затем мы просто используем функцию Python join(), чтобы поместить символы | между ними и связать их все в одну строку, которую мы можем записать в файл.
Я не хочу связывать их в одну строку, а не соединять их через '|' Я использовал этот символ, чтобы пометить новую ячейку, чтобы каждая пара (X1; X2) находилась в одной ячейке в той же строке, а затем мы переключаем строки
Это не то, как вы определяете список в Python. Если это не в словаре или в чем-то подобном