Я хотел бы написать CSV-файл фиксированной ширины, разделенный пробелами и минимально заключенный в кавычки, используя Python csv writer.Пример вывода:
item1 item2
"next item1" "next item2"
anotheritem1 anotheritem2
Если я использую
writer.writerow (("{0: 15s}". Формат (item1), "{0: 15s)} ". format (item2)))
...
затем, с разделителем пробела, форматирование прерывается на кавычки или экранирование (в зависимости от константы csv.QUOTE_ *)добавляются из-за пробелов в конце форматирования элементов:
"item1 " "item2 "
"next item1 " "next item2 "
"anotheritem1 " "anotheritem2 "
Конечно, я могу отформатировать все сам:
writer.writerow (("{0: 15s}{1: 15s} ". Format (item1, item2)))
но тогда нет смысла использовать csv Writer.Кроме того, мне пришлось бы вручную разобраться в тех случаях, когда в элементах есть место и нужно использовать кавычки / экранирование.Другими словами, кажется, что мне понадобится (несуществующая) константа csv "QUOTE_ABSOLUTELYMINIMAL", которая будет действовать как "QUOTE_MINIMAL", но также будет игнорировать конечные пробелы.
Есть ли способ достичь "QUOTE_ABSOLUTELYMINIMAL "или каким-либо другим способом получить CSV-вывод с фиксированной шириной, разделенным пробелом, с помощью модуля CSV в Python?
Причина, по которой мне нужна функция фиксированной ширины в CSV-файле, заключается в лучшей читаемости.Таким образом, он будет обрабатываться как CSV для чтения и записи, но лучше читается благодаря структуре столбцов.Чтение не является проблемой, так как опция csv skipinitialspace заботится о игнорировании лишних пробелов.К моему удивлению, написание кажется проблемой ...
РЕДАКТИРОВАТЬ: я заключаю, что это невозможно достичь с помощью текущего плагина CSV.Это не встроенная опция, и я не могу найти никакого разумного способа достичь этого вручную, так как кажется, что нет никакого способа записать дополнительные разделители в csv-писателе Python без цитирования или экранирования.Таким образом, мне, вероятно, придется написать свой собственный писатель CSV.