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