#python #arrays #string #csv #zip
Вопрос:
У меня есть код, который примерно такой:
x = zip(sources,clist,RMSlist,residuelist)
name1 = string("sources")
name2 = string("clist")
name3 = string("RMSlist")
name4 = string("residuelist")
y = zip(name1,name2,name3,name4)
with open('test.csv', 'w') as f:
writer = csv.writer(f, delimiter='t')
writer.writerows(y)
writer.writerows(x)
Моя цель-записать каждый массив в столбец, но я хочу, чтобы над этим столбцом было определение (имя) для него. Это была моя попытка с определенными 4 именами.
Это просто для лучшего понимания вывода текстового файла
Комментарии:
1.
writer.writerow(["sources", "clist", "RMSlist", "residuelist"])
2. было бы проще, если бы вы сохранили имена в виде списка
all_names = ["sources", "clist", "RMSlist", "residuelist"]
, а затем могли бы использоватьfor
-loop для создания нового списка сstring(name)
иwriter.writerow[all_names]
3. на чем вы пытаетесь сэкономить
writerows(x)
? Если это имена/определения, то вам следует написать это раньшеwriterows(y)
, чтобы получить его наверху.4. теперь, когда я зацикливаюсь на вашем коде, я думаю, что вся ваша проблема в том, что вы используете
zip()
— вам нужно создать обычный списокy = ["sources", "clist", "RMSlist", "residuelist"]
без использованияzip()
и написать егоwriterow(y)
без символовs
в wordwriterow
Ответ №1:
Я думаю, что ваша проблема в том, что вы используете zip()
и writerows
с символом s
в конце.
Вы должны создать обычный список с именами
names = ["sources", "clist", "RMSlist", "residuelist"]
и используйте writerow
(без символа s
в конце) для записи одной строки
writer.writerow(names) # without char `s`
Кстати: Вместо имени names
(которое может означать множество объектов) вы можете использовать имя header
, которое означает один объект.
header = ["sources", "clist", "RMSlist", "residuelist"]
rows = zip(sources, clist, RMSlist, residuelist)
with open('test.csv', 'w') as f:
writer = csv.writer(f, delimiter='t')
writer.writerow(header) # without char `s` to write one row
writer.writerows(rows) # with char `s` to write many rows
Комментарии:
1. спасибо за помощь, не обратил внимания на букву s в конце!