Операции над текстом кириллицей в Python 2.7
import codecs
f = codecs.open("myfile.txt", "r", "utf-8")
text = f.read
Текстовые строки будут иметь приставку u
Т.е. если строка — ASCII, то она имеет вид: 'mytext', если строка — юникод, она имеет вид: u'mytext'
Строчки, введенные непосредственно в коде, также помечать u перед кавычками - и этого достаточно для адекватного отображения?
я конечно не такой гуру питона как снежный макс, но то что пописываю для себя все держу в юникоде
а что мешает всему скрипту работать в utf8Python3 умеет сам нативно unicode, и ни с чем заморачиваться не нужно, топикстартеру же нужно это делать в Python27, так что придётся много раз делать encode/decode по мере работы. Но если все строки были изначально загружены в юникодные, aka u'text', то всё upper/lower на них должен нормально работать.
import sys
for i in sys.readlines:
line = line.decode("utf-8").rstrip("\r\n") # преобразовываем обычную строку в wide с использованием utf-8
line = line.lower
print line.encode("utf-8") # преобразовываем wide строку в обычную, кодируя символы utf-8
PS
надо просто в голове держать, что на вход ты получаешь байтики, а внутри программы удобно (не всегда, конечно) работать со строками, в которых каждый итерируемый элемент - буква языка.
то есть кодировка появляется только при вводе-выводе, а внутри программы у тебя строки хранятся как u"aaaa" - то есть никакой кодировки у таких строк нет.
Астрологи объявили месяц кириллицы в p*-скриптовых языках.
А как в таком случае выводить в utf-8 в файл?Сложно двумя словами описать encode и decode в сферическом вакууме. Был бы пример живого файла или кода, можно было бы конкретней разобрать. Файл можно открыть для чтения в режимах 'r' и 'rb' (записи — соответственно 'w' и 'wb' причем я предпочитаю работать с бинарными данными, байты могут писаться по одному и по два (utf-8 использует 2 байта на знак)... Слишком много ответвлений для обсуждения, высок шанс отклониться от нужной темы, не зная конкретики.
Есть хорошая презентация: ТЫЦ. Если что-то останется не до конца понятно, пиши.
Оставить комментарий
5065584
Необходимо считать из файла текст кириллицей (utf-8) и провести над некоторыми словами ряд операций (lower/upper, например, то есть изменить регистр но либо получается UnicodeDecodeError, либо функция над текстом просто не исполняется.Не подскажете, как эту нехитрую операцию проделать максимально коротким путем?
Библиотеку codecs импортировал
Вообще, как правильно работать с данными в UTF-8 в Питоне?