Я использую csv.DictWriter для вывода CSV-файлов из набора словарей. Я использую следующую функцию:
def dictlist2file(dictrows, filename, fieldnames, delimiter='\t',
lineterminator='\n'):
out_f = open(filename, 'w')
# Write out header
header = delimiter.join(fieldnames) + lineterminator
out_f.write(header)
# Write out dictionary
data = csv.DictWriter(out_f, fieldnames,
delimiter=delimiter,
lineterminator=lineterminator)
data.writerows(dictrows)
out_f.close()
где dictrows - это список словарей, а имена полей предоставляют заголовки, которые должны быть сериализованы в файл.
Некоторые значения в моем списке словарей (dictrows) являются числовыми - например, плавает, и я хотел бы указать форматирование этих. Например, я хотел бы, чтобы плавающие элементы были сериализованы с "% .2f", а не с полной точностью. В идеале я хотел бы указать какое-то отображение, в котором указано, как форматировать каждый тип, например,
{float: "%.2f"}
это говорит о том, что если вы видите поплавок, отформатируйте его с% .2f. Есть простой способ сделать это? Я не хочу создавать подкласс DictWriter или чего-то такого сложного - это кажется очень общей функциональностью.
Как это можно сделать?
Единственное другое решение, которое я могу придумать, это: вместо того, чтобы возиться с форматированием DictWriter, просто используйте десятичный пакет, чтобы указать десятичную точность значений с плавающей запятой, равную% .2, что приведет к ее сериализации. Не знаете, если это лучшее решение?
Большое спасибо за вашу помощь.