Вот такой запрос:
$.ajax({ type: "POST", url: "iotest.py", data: { action: 'writePlayer', dataScore: dataScore, dataName: dataName, dataSurname: dataSurname, dataPhone: dataPhone, dataEmail: dataEmail }, success: function (response) { console.log("Готово " + response) } });
И вот мой скрипт:
#!/usr/bin/python3.4 import cgi import csv print("Content-type: text/html\n\n") form = cgi.FieldStorage() dataFile = "db.csv" with open(dataFile, 'a', newline='', encoding='utf-8') as csvfile: fieldnames = ['dataName', 'dataSurname', 'dataScore', 'dataPhone', 'dataEmail'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames, dialect='excel') writer.writerow({'dataName': form['dataName'].value, 'dataSurname': form['dataSurname'].value, 'dataScore': form['dataScore'].value, 'dataPhone': form['dataPhone'].value, 'dataEmail': form['dataEmail'].value})
У меня следующие проблемы с этим скриптом:
1) Эксель не понимает кодировку, вместо кириллицы отображает левые символы. Я очень долго добивался того, чтобы в CSV отображалась Unicode кириллица, но Эксель все равно ее не осилил.
2) Мне нужно, чтобы данные были разбиты по ячейкам, вот так:

А сейчас у меня все выглядит вот так:

Прошу вашей помощи с этой проблемой.
UPD Задача решена!
1) Благодаря наводке doza_and на эту статью на хабре я выяснил, что Эксель хочет видеть CSV в кодировке Windows-1251
Дело за малым - сразу открывать файл с нужной кодировкой:
with open(dataFile, 'a', newline='', encoding='cp1251')
2) Чтобы понять как Эксель представляет себе столбики, я создал в нем файл, сохранил его в CSV и открыл блокнотом++
Оказалось, что столбики разделяются между собой знаком “;”. Так что методу записи нужно всего-то добавить параметр
delimiter=';'
К слову, в статье на хабре тоже было сказано “разделители — точка с запятой (не запятая!)”, но я этому не придал значения, когда читал.