Найти - Пользователи
Полная версия: Проблема с кодировкой
Начало » Python для экспертов » Проблема с кодировкой
1
kise97
Привет.

Есть код

content = "Тут строка большая, не буду ее тут писать..."
print content # Выводит нормально 
print chardet.detect(content) #{'confidence': 0.23266364493766054, 'encoding': 'UTF-8'}
content = re.sub("(?i)[^-0-9a-zа-яё«»\&\;\/\<\>\.,\s\(\)\*:!\?]", "", content)
print content #кракозябры
print chardet.detect(content) #{'confidence': 0.23266364493766054, 'encoding': 'ISO-8859-5'}

Что делать? Я уже реально задолбался с этими кодировками в питоне… (может кто знает, в 3.* все норм с кодировками?)
Python 2.7, в начале файла “#coding:utf-8”, файл в utf-8, ide - pycharm

Спасибо.
FishHook
>>> Я уже реально задолбался с этими кодировками в питоне ….Python 2.7, в начале файла “#coding:utf-8”, файл в utf-8, ide - pycharm

ОС какая?
FishHook
kise97
в начале файла “#coding:utf-8”
Если в начале именно это, я Вас огорчу сильно, должно то быть
# -*- coding: utf-8 -*-
bismigalis
если python2 то перед кавычкой должно быть u для юникодного литерала
или вначале файла добавить from __future__ import unicode_literals

FishHook
Если в начале именно это, я Вас огорчу
вообще там гибче: первая или вторая строка должна отвечать регекспу
coding[:=]\s*([-\w.]+)
http://www.python.org/dev/peps/pep-0263/

kise97
может кто знает, в 3.* все норм с кодировками?
в 3.* получше, ибо:
строковые литералы по умолчанию юникодные
кодировка файла по умолчанию utf-8
agalen
В python 2.7 строка “а-яё” в utf-8 - это ‘\xd0\xb0-\xd1\x8f\xd1\x91’. В regexp для 8-битных строк каждый байт обрабатывается отдельно.
Короче, надо все переводить в unicode и не забывать ставить r“…”.
content = re.sub(ur"(?i)[^-0-9a-zа-яё«»\&\;\/\<\>\.,\s\(\)\*:!\?]", u"", content.decode("utf-8"))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB