Как изменить кодировку csv файла на utf 8
python - Кодировка в csv файл
Вопрос задан
Изменён 3 месяца назад
Просмотрен 72 раза
Подскажите, какую кодировку в коде нужно указать что бы не было крякозяблов ?
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 успешно записан !')
- python
1
Если это Windows
и Excel
, то скорее всего подойдёт encoding='cp1251'
, ещё можно попробовать encoding='utf-8-sig'
, спасибо @Namerek за напоминание.
Кроме того, у экселя другой разделитель, попробуйте csv.writer(file, delimiter=";")
.
8
Поробуйте использовать
utf-8
:
UTF-8 поддерживает и кириллицу, и буквы английского алфавита.
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Как поменять кодировку в Excel
Главная » Программы
Добро пожаловать на WiFiGid! Итак, вы столкнулись с неприятностью: открываете файл Excel, а там видите одни «кракозябры».
В последнее время такое встречается все реже, но бывает. Ничего страшного! В этой статье я покажу вам возможные варианты поменять кодировку в Excel, чтобы все читалось как надо. Просто повторяем за мной.
Содержание
- Способ 1 – Блокнот
- Способ 2 – NotePad++
- Способ 3 – Получение данных в Excel
- Про сохранение в нужной кодировке
- Видео по теме
- Задать вопрос автору статьи
Способ 1 – Блокнот
Так как блокнот есть на любом компьютере по умолчанию (я про Windows), предлагаю начать именно с него.
- Открываем Excel файл в Блокноте (именно так, все нормально). Для этого или открываем сначала Блокнот, а уже там просто открываем наш файл, или щелкаем правой кнопкой мыши по файлу Excel, выбираем пункт «Открыть с помощью…» и там ищем «Блокнот» (возможно, потребуется открыть полный список программ).
- В «Блокноте» переходим в «Файл – Сохранить как» и сохраняем наш файл в кодировке «ANSI» (ну или пробуем UTF8).
- Открываем только что сохраненный файл и радуемся.
Способ 2 – NotePad++
Лично я вместо блокнота уже давно использую NotePad++. Если он у вас уже установлен, можете смело пользоваться этим классным способом. А если нет – переходите на официальный сайт, скачивайте и устанавливайте. Программа действительно очень классная.
- Открываем наш файл Excel с помощью NotePad++. Действуем по аналогии с простым Блокнотом – или запускаем NotePad, а там открываем наш файл, или же сразу с помощью пункта «Открыть с помощью» открываем файл (а еще NotePad++ зачастую сразу встраивается в контекстное меню на правой кнопке мыши).
- Выбираем пункт «Кодировки – Преобразовать в UTF-8» (ну или «Преобразовать в ANSI»).
- Если все сделано правильно, вы сразу увидите изменившуюся кодировку. Останется только сохранить файл и закрыть NotePad.
Способ 3 – Получение данных в Excel
Предыдущие варианты не просто удобные, но еще и быстрые. Но если вдруг кто-то захочет использовать сам Excel, чтобы изменить кодировку, тут с этим делом все сложнее. Работает как функция импорта, но со своими заковырками.
- Создаем новый файл Excel (пустой). Переходим на вкладку «Данные» и выбираем «Получить данные – Из файла – Из текстового/CSV файла».
- Появится окно открытия файла. В нем выбираем наш проблемный файл Excel.
При открытии поддерживаются только файлы TXT и CSV (в основном ведь проблемы с CSV). Но если у вас формат XLSX, то проще предварительно его с помощью самого Excel сохранить в CSV, а уже там пробовать делать импорт данных.
![]()
- Появится окно, в котором вы и сможете подобрать кодировку, чтобы данные распознались верно:
- После подбора кодировки (и выбора в качестве разделителя запятой) нажимаем на кнопку «Преобразовать данные» и все должно успешно перенестись.
Про сохранение в нужной кодировке
Для тех читателей этой статьи, у которых все отображается отлично, а просто нужно сохранить файл в другой кодировке, делаем следующее:
- Переходим в «Файл – Сохранить как».
- Выбираем место сохранения.
- В появившемся окне стандартного сохранения файла находим «Сервис – Параметры веб-документа».
- И уже здесь переходим на вкладку «Кодировка» и задаем нужную.
Видео по теме
Помогла ли вам эта статья?
43 3
Автор статьи
Ботан 652 статей
Мастер занудных текстов и технического слога. Мистер классные очки и зачётная бабочка. Дипломированный Wi-Fi специалист.
Как конвертировать файлы csv в кодировку utf-8
спросил
Изменено 2 года назад
Просмотрено 123к раз
Можно ли преобразовать данные csv с кодировкой iso-8859-13
в UTF-8
?
В моей старой системе нет UTF-8
, используется только iso-8859-13
. Система, в которую мне нужно импортировать, не имеет iso-8859-13
, но имеет UTF-8
и UTF-16
. Если я попытаюсь открыть файл csv с кодировкой, отличной от iso-8859-13
, то некоторые символы не распознаются. Если я пытаюсь импортировать такой файл в новую систему, выдает ошибку, что у меня неправильная кодировка. Я могу импортировать его только с помощью
windows-1252
, но тогда он будет импортирован с нераспознанными символами. Что я могу сделать, чтобы преобразовать его в обычную кодировку, такую как UTF-8
?
- csv
- кодировка
- utf-8
- импорт
- конвертер
Откройте файл в Notepad++ и нажмите Encoding->Convert to UTF-8 .
(Не нажимайте Кодировать в UTF-8 , потому что это фактически не преобразует символы.)
3
Мне удалось преобразовать просто с помощью текстового редактора. Я открыл файл csv с iso-8859.-13
кодировка. Затем создал пустой CSV-файл с utf-8
. Затем просто скопировал все из одного csv в другой. Затем я мог бы импортировать его в новую систему.
Ранее я пытался сделать это с помощью libreoffice, но почему-то он сохранялся с кодировкой iso-8859-13
.
2
Для тех, кто не знает, как преобразовать кодировку файла с помощью Notepad++: Создайте новый файл в Notepad++ -> Перейдите в раздел Кодировка -> Кодировать в UTF-8 -> Скопируйте и вставьте содержимое -> сохраните файл как .csv
У меня сработало так: открыть файл CSV обычным Блокнотом. Сохраните как в Блокноте и установите кодировку как на картинке. Кодировка
Копирование содержимого .csv из Excel в Notepad++ не сохраняет формат, откройте исходный .csv в Notepad++ и скопируйте оттуда.
- После открытия в Notepad++ создайте новый файл в Notepad++ с помощью 'Ctrl + n'.
- Перейдите в раздел Кодировка -> Преобразовать в UTF-8-BOM -> Скопируйте и вставьте содержимое -> сохраните файл как .csv.
(Windows 10)
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Преобразование CSV в UTF-8 в Python
спросил
Изменено 2 года, 8 месяцев назад
Просмотрено 24к раз
Я пытаюсь создать дубликат CSV без заголовка. Когда я пытаюсь это сделать, я получаю следующую ошибку:
UnicodeDecodeError: кодек utf-8 не может декодировать байт 0xa0 в позиции 1895: недопустимый начальный байт.
Я прочитал документацию python CSV
по кодировке Unicode
и UTF-8
и реализовал ее. Однако мой выходной файл создается без данных. Не уверен, что я делаю неправильно здесь.
импорт CSV path = '/Users/johndoe/file.csv' с open(path, 'r') в качестве входного файла, open(path + 'final.csv', 'w') в качестве исходящего файла: def unicode_csv (входящий файл, выходной файл): входы = csv.reader(utf_8_encoder(infile)) вывод = csv.writer (выходной файл) для индекса, строка в перечислении (входы): yield [unicode (ячейка, 'utf-8') для ячейки в строке] если индекс == 0: Продолжить output.writerow(строка) def utf_8_encoder (входящий файл): для строки в файле: доходность line.encode('utf-8') unicode_csv (входящий файл, выходной файл)
- python
- csv
- utf-8
Решение состояло в том, чтобы просто включить два дополнительных параметра в
с open(path, 'r') в качестве infile:
Два параметра: кодировка = «UTF-8» и ошибки = «игнорировать». Это позволило мне создать дубликат оригинального CSV без заголовков и без ошибки UnicodeDecodeError. Ниже приведен готовый код.
импорт CSV path = '/Users/johndoe/file.csv' с open(path, 'r', encoding='utf-8', errors='ignore') в качестве входного файла, open(path + 'final.csv', 'w') в качестве внешнего файла: входы = csv.reader(infile) вывод = csv.writer (выходной файл) для индекса, строка в перечислении (входы): # Создать файл без заголовка если индекс == 0: Продолжить output.writerow(строка)
Начиная со строки
unicode_csv(infile,outfile)
не имеет отступа, он выходит за рамки команды с
, и когда он вызывается, входной и выходной файлы закрываются.