добавление дополнительной строки в текстовый файл на python

#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 в word writerow

Ответ №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 в конце!