запись фиксированной ширины, вывод CSV с разделителями пробелами в Python

Я хотел бы написать 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.

7
задан jvm 13 April 2011 в 10:32
поделиться