Основная проблема в том, что вам нужно передать writer.writerow()
последовательность элементов, а не строку. Чтобы получить требуемые разделители, необходимо указать delimiter=";"
при создании объектов csv.writer
, а также объектов csv.reader
. Было несколько других проблем, например, как вы open()
сохраняли CSV-файлы, всегда нужно указывать newline=''
, чтобы убедиться, что переводы строк обрабатываются правильно.
Я также добавил строку, чтобы скопировать строку заголовка в выходной файл. В любом случае, это то, что output.csv
содержит после запуска:
id, email, first_name, last_name, institution, creation_date, modification_date, country
1;tar.ber@test.eu;tar;ber;EDTG,TGD;;;
2;val.dzz@test.eu;var;dzz;Test with , inside;;;
А вот ваш код с изменениями:
import csv
with open('customer.csv', 'r', newline='') as csvFile, \
open("output.csv", 'w', newline='') as outFile:
reader = csv.reader(csvFile, delimiter=";")
writer = csv.writer(outFile, delimiter=";")
writer.writerow(next(reader)) # Copy header row.
for row in reader:
id, email, first_name, last_name, institution = row[0:5]
modification_date, country, creation_date = row[5:8]
writer.writerow([id, email, first_name, last_name, institution,
modification_date, country, creation_date])
Это может работать на Ваш случай;
from q in Questions
select new ListQuestion
{
Tags = q.QuestionTags.Select(qt => qt.Tag),
QuestionId = q.ID,
Title = q.Title
}