Уведомления

Группа в Telegram: @pythonsu

#1 Май 24, 2011 22:16:45

verec
От:
Зарегистрирован: 2011-05-24
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

Есть текстовые файлы в стандартной виндовой кодировке (windows-1251, как я понимаю), мне необходимо выделить оттуда все слова, проблема в том, что текст может быть как на русском, так и на английском языках. Сейчас код вот такой

f = codecs.open(doc, 'r', "windows-1251")
text = f.read()
text = unicode(text)
words = text.split()
print words
при выводе выдаётся последовательность кодов вида \xx, как узнать, что считалось?

на компьютере Win7 x64 и python2.6



Офлайн

#2 Май 24, 2011 22:36:30

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

:)
так выделить или вывести на экран?



Офлайн

#3 Май 24, 2011 22:39:00

verec
От:
Зарегистрирован: 2011-05-24
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

хочу вывести на экран, чтобы можно было проверить правильно ли слова распарсились



Офлайн

#4 Май 24, 2011 22:55:32

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

:)
попробуй выводить по одному слову



Офлайн

#5 Май 24, 2011 22:59:43

verec
От:
Зарегистрирован: 2011-05-24
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

там всё равно выдаётся последовательность кодов, а мне хочется увидеть слова, которые выделились



Офлайн

#6 Май 24, 2011 23:02:12

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

:)
попробуйте слова перед выводом на экран перекодировать в кодировку консоли, в виндовс это cp866



Офлайн

#7 Май 24, 2011 23:09:21

verec
От:
Зарегистрирован: 2011-05-24
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

а каким образом это можно сделать?



Офлайн

#8 Май 24, 2011 23:11:04

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

:)
к слову, text = unicode(text) делать не нужно, текст уже должен быть в юникоде…



Офлайн

#9 Май 24, 2011 23:14:04

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

:)
у строки есть два метода encode и decode
первый переводит из юникода в указанную кодировку
второй переводит из указанной кодировки в юникод



Офлайн

#10 Май 24, 2011 23:14:18

verec
От:
Зарегистрирован: 2011-05-24
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

codecs

попробовал сделать вот так

f = codecs.open(doc, 'r', "cp866")
text = f.read()
words = text.split()
print words
но по прежнему русские слова выдаёт как u'\u0401\u044e\u0451\u0404'



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version