@mr_drinkens89

Python3 и запись CSV в cp1251?

Доброго времени суток.
Python3.6

Столкнулся с проблемой записи строк в csv в кодировке cp1251.
def create_item_order_info(self):
        from io import StringIO
        file = StringIO()
        writer = csv.writer(file,delimiter=';')

        fields = ['Но. чека',
                          'Но. заказа',
                          'Но. позиции',
                          'Но. Карты лояльности',
                          'Цена',
                          'Количество',
                          'Сумма',
                          'Стоимость доставки',
                          'Итог',
                          'Дата заказа',
                          'Дата доставки',
                          'Статус',
                          'Комисс. товар',
                          'Накладная Но']

        writer.writerow([field for field in fields])

        for item in self.queryset:
            writer.writerow( ['',
                              int( item.order.order_number ),
                              int( item.product.vendor_id ),
                              '',
                              int( item.product.stock_price ),
                              int( item.product_amount ),
                              int( item.product.stock_price * item.product_amount ),
                              '0',
                              int( item.product.stock_price * item.product_amount ),
                              item.order.created.date().strftime( '%d.%m.%Y' ),
                              item.order.created.date().strftime( '%d.%m.%Y' ),
                              'Возврат',
                              'Да',
                              ''] )


        response = HttpResponse(file.getvalue(), content_type='text/csv' )

        response['Content-Disposition'] = 'attachment; filename="return_info.csv"'

        return response


На выходе я получаю csv в utf8.
Каким образом можно получить данный файл в кодировке cp1251?
(система, куда передается файл, требует именно cp1251)
Заранее благодарю.
  • Вопрос задан
  • 1184 просмотра
Решения вопроса 1
sim3x
@sim3x
Хватит просто добавить .encode('cp1251')
file.getvalue().encode('cp1251')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы