Как изменить кодировку csv файла на utf 8 python 3
Перейти к содержимому

Как изменить кодировку csv файла на utf 8 python 3

  • автор:

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » CSV-файл — определение и изменение кодировки

#1 Июнь 6, 2016 12:26:17

coffe4wolf Зарегистрирован: 2016-04-21 Сообщения: 34 Репутация: 0 Профиль Отправить e-mail

CSV-файл — определение и изменение кодировки

В наличии CSV-файл с таблицей и разделителями точка с запятой, который содержит список фамилий на русском языке. Есть необходимость удалить из файла определённые строки, решил я это делать при помощи регулярных выражений. Однако возникла проблема.
Сырой вывод через print(repr()) выводит русские символы следующим образом:
“\xc0\xe1\xe0\xf8\xe8\xe4\xe7\xe5 \xc0.\xc0.;;;\n”
Как результат регулярка не цепляет русские символы, так как видит эту абракадабру, насколько я понимаю.
Какие есть варианты для решения проблемы? Не совсем ясно в какой кодировке файл (pyCharm в нижнем правом углу выставил ISO-8859-1), его лучше перекодировать в какой-либо другой формат, в котором регулярка будет цеплять кириллицу, или же в питоне есть возможность настроить регулярки?

import re import csv i_file = open('testcsv.csv','rt') txt = '' for row in i_file: txt += row #собираю файл в строку txt = re.sub(r'[А-я]+', '1', txt) #шаблон чисто для проверки print((txt)) 

Отредактировано coffe4wolf (Июнь 6, 2016 12:27:16)

#2 Июнь 6, 2016 21:42:01

doza_and От: Зарегистрирован: 2010-08-15 Сообщения: 4138 Репутация: 252 Профиль Отправить e-mail

CSV-файл — определение и изменение кодировки

coffe4wolf
Однако возникла проблема. Сырой вывод через print(repr())

1. Проблема не в принте. Открывать файл надо с указанием его кодировки.

i_file = open('testcsv.csv','rt',encoding="utf-8") 
import csv 

Вы это не используете. Это мусор.
Зачем собирать файл в строку кода вы строки хотите выкидывать. Применяйте регулярные выражения к строкам

#3 Июнь 7, 2016 10:12:51

coffe4wolf Зарегистрирован: 2016-04-21 Сообщения: 34 Репутация: 0 Профиль Отправить e-mail

CSV-файл — определение и изменение кодировки

doza_and

doza_and
1. Проблема не в принте. Открывать файл надо с указанием его кодировки.

Но ведь у open нет атрибута encoding о.О

Кодировка в csv файл

введите сюда описание изображения

Подскажите, какую кодировку в коде нужно указать что бы не было крякозяблов ?

 with codecs.open(f'_.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_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_sale_data = item.find('div', class_='card-sale__date').text.strip().replace('\n', ' ') with codecs.open(f'_.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'Файл _.cvs успешно записан !') 

Как можно через python 3 изменить кодировку файла из utf-8 в cp1252 (ос windows 10)?

Как можно через python 3 изменить кодировку файла из utf-8 в cp1252 (ос windows 10)?

  • Вопрос задан более трёх лет назад
  • 7303 просмотра

Комментировать

Решения вопроса 1

Сергей Горностаев @sergey-gornostaev Куратор тега Python

Седой и строгий

Если файл целиком влезет в память

data = None with open('test.txt', encoding='utf-8') as fh: data = fh.read() with open('test.txt', 'wb') as fh: fh.write(data.encode('cp1251'))

Ответ написан более трёх лет назад

Нравится 1 1 комментарий

Кодировка в csv-файле

Кодировка файла в формате xls в csv
Есть файл/выгрузка в формате xls , нужно перекодировать в csv, но при перкодировке и пересохранении.

Лишние запятые в csv файле
Добрый день, при попытке добавить дату-время в виде названия столбца в csv стобик добавляется, но.

Пустые строки в файле csv
Здравствуйте. Провожу запись в файл csv для последующей перезаписи в базу данных SQLite3. Код.

Распарсить строки в CSV файле
Добрый день! У меня есть некоторый файл с расширением csv. В нём какая-то не совсем явная структура.

Запись в нужной строке в csv файле
Добрый день! Столкнулся с такой проблемой, записал в csv-файл 2 строки, сейчас хочу записать в 3 и.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *