Кодировка в csv файл
Подскажите, какую кодировку в коде нужно указать что бы не было крякозяблов ?
with codecs.open(f'{city}_{cur_time}.csv', 'w+', encoding='utf-8', ) as file:
writer = csv.writer(file)
writer.writerow(
(
'Продукт',
'Старая цена',
'Новая цена',
'Процент скидки',
'Время акции',
)
)
for item in cards:
try:
card_title = item.find('div', class_='card-sale__title').text.strip()
card_discount = item.find('div', class_='card-sale__discount').text.strip()
card_price_old_integer = item.find('div', class_='label__price_old').find('span', class_='label__price-integer').text.strip()
card_price_old_decimal = item.find('div', class_='label__price_old').find('span', class_='label__price-decimal').text.strip()
card_old_price = f'{card_price_old_integer}.{card_price_old_decimal}'
card_price_integer = item.find('div', class_='label__price_new').find('span', class_='label__price-integer').text.strip()
card_price_decimal = item.find('div', class_='label__price_new').find('span', class_='label__price-decimal').text.strip()
card_price_new = f'{card_price_integer}.{card_price_decimal}'
card_sale_data = item.find('div', class_='card-sale__date').text.strip().replace('\n', ' ')
with codecs.open(f'{city}_{cur_time}.csv', 'a', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(
(
card_title,
card_old_price,
card_price_new,
card_discount,
card_sale_data
)
)
except AttributeError:
continue
print(f'Файл {city}_{cur_time}.cvs успешно записан !')
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Если это Windows и Excel, то скорее всего подойдёт encoding='cp1251', ещё можно попробовать encoding='utf-8-sig', спасибо @Namerek за напоминание.
Кроме того, у экселя другой разделитель, попробуйте csv.writer(file, delimiter=";").
Автор решения: Brainsluggy
→ Ссылка
Поробуйте использовать utf-8:
UTF-8 поддерживает и кириллицу, и буквы английского алфавита.
