Найти - Пользователи
Полная версия: Юникодные дела....
Начало » Python для экспертов » Юникодные дела....
1
Saff
Пишу простую програмку которая парсит сайт, выдерает из него 5 слов(они на сайте в CP1251) из строки и делает дальнейший запрос на системный урл, в параметре(_GET) которого передаются эти слова.

Проблема в том что пробую исполнить код пошагово в консоли, и он работает )))
МОжет чего то непонимаю совсем???
Возможно ли без конверта(вследствии хардкод получается (( ) кодировки выполнить regexp, ибо например без unicode(var,'cp1251') неработает re.findall ((
Сейчас при исполнении код выдаёт ошибку:
'ascii' codec can't encode characters in position 38-48: ordinal not in range(128)

забыл сказать что программа на wx питоне используя PythonCard….
Скорее всего проблема где то в нём…

Вот кусок кода:

# -*- coding: utf-8 -*-
TEXT_URL = u"http://mysys.url/?str=\"%s\""
.....
get = "http://" + domain
r = re.compile(u"(([йцукенгшщзхъёэждлорпавыфячсмитьбю-]{2,}\s){4})",re.UNICODE)

try:
handle = urllib.urlopen(get)
content = handle.read()
content = unicode(content,'cp1251')
result = r.findall(content)
if len(result)>0:
###############YA################
w_str = result[0][0]
href = TEXT_URL % w_str
print href.encode("cp1251") # или urllib.urlopen(href) выдаёт туже ошибку
qwer
а кодировка stdout точно CP1251 ?

попробуйте так :
import sys
print href.encode(sys.stdout.encoding, 'ignore')
еще можно сделать квотирование URL :
href = TEXT_URL % urllib.quote(w_str.encode('utf8'))
Saff
Разобрался, вопрос закрыт.
Сам тупил )

Рабочий код:

# -*- coding: utf-8 -*-
TEXT_URL = "http://mysys.url/?str=\"%s\""
.....
get = "http://" + domain
r = re.compile("(([йцукенгшщзхъёэждлорпавыфячсмитьбю-]{2,}\s){4})")

try:
handle = urllib.urlopen(get)
content = handle.read()
content = content = content.decode("cp1251").encode("utf8")
result = r.findall(content)
if len(result)>0:
###############YA################
w_str = result[0][0]
href = TEXT_URL % w_str
qwer
а как RE узнает в какой кодировке входной текст ?
искать и обрабатывать лучше в Unicode, только конечный результат преобразовать в UTF8/CP1251 т.д.
Saff
Узнаёт я так понимаю по моей локали.
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