@seleznev_artem_info
https://github.com/NameArtem

Python выводит текст правильно, но не записывает в словарь с неправильной кодировкой. Как исправить?

Здравствуйте.
Python2.7 (нет нужных библиотек на P3)(сайт от куда получаю данный в кодировке CP1251)
Проблема в том, что объект полученный из Beautiful Soup, переводиться в строку и записывается в словарь, но не отображается в правильной кодировке.
Пример:
go = 'www.ya.ru'
regionName = newBs.find("h1",{"class":"cart"}).text.encode('utf-8')
regionName = str(regionName[14:-8]).encode('utf-8')
regionsDict[regionName]=go

При этом, если выводить словарь или просто значение regionName, то оно выводиться правильно. Правильный вывод:
regionsDict => Результат => Яндекс
regionsDict[regionName] => Результат => www.ya.ru

Но если выводить Ключ и Значение, или записывать в файл или БД, получаться вывод вот такой:
'\xd0\x9c\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0': www.ya.ru

Перепробовал многое, даже это использовал:
import sys
reload(sys)
sys.setdefaultencoding('utf-8'


Заранее спасибо!
  • Вопрос задан
  • 422 просмотра
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Конкретно с выводом пары ключ-значение - это беда питона 2.7. Выводите руками в цикле отдельно ключ, отдельно значение.

С записью в БД - скорее всего несовпадение кодировок БД и того что у вас в питоне.
Ответ написан
@seleznev_artem_info Автор вопроса
https://github.com/NameArtem
Вот, какой был ответ
В начале файла:
#-*- coding:utf-8 -*-
import sys
reload(sys)
import locale
sys.setdefaultencoding(locale.getpreferredencoding())

А переменные и весь текст записываем вот так:
имя_переменной = u"".join(имя_переменной).encode('utf-8').strip()


Может быть, кому-то будет полезно.

P.S. Проблема плохо решаемая только с кириллицей
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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