Форум сайта python.su
Привет.
Есть код
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'}
Офлайн
>>> Я уже реально задолбался с этими кодировками в питоне ….Python 2.7, в начале файла “#coding:utf-8”, файл в utf-8, ide - pycharm
ОС какая?
Офлайн
kise97Если в начале именно это, я Вас огорчу сильно, должно то быть
в начале файла “#coding:utf-8”
# -*- coding: utf-8 -*-
Офлайн
если python2 то перед кавычкой должно быть u для юникодного литерала
или вначале файла добавить from __future__ import unicode_literals
FishHookвообще там гибче: первая или вторая строка должна отвечать регекспу
Если в начале именно это, я Вас огорчу
coding[:=]\s*([-\w.]+)
kise97в 3.* получше, ибо:
может кто знает, в 3.* все норм с кодировками?
Отредактировано bismigalis (Апрель 21, 2013 17:50:21)
Офлайн
В 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"))
Офлайн