Python-сообщество
![]()
- Начало
- » 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 и.