Форум сайта python.su
Я вчера ночью, видимо, перепутал строки и в сообщении №1 строка urldecoded не соответствует второй строке, в первой, действительно, “сахалин”, а во второй “лотывлоат”.. Но проблема не в том
Вот код, который полностью развеет все сомнения
>>> str_from_file = '{"url": "http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213"}' >>> json_obj = json.loads(str_from_file) >>> json_obj {u'url': u'http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213'} >>> url = json_obj['url'] >>> url u'http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213' >>> import urllib >>> urldecoded = urllib.unquote(url) >>> urldecoded u'http://yandex.ru/yandsearch?text=\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0&lr=213'
Отредактировано skavans (Авг. 27, 2013 12:02:16)
Офлайн
print u'http://yandex.ru/yandsearch?text=\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0&lr=213'.encode('latin1').decode('utf-8') # http://yandex.ru/yandsearch?text=москва&lr=213
Офлайн
#1
:)
Школьники говорите…
Отредактировано 4kpt (Авг. 27, 2013 12:09:00)
Офлайн
# urldecoded = urllib.unquote(url) urldecoded = urllib.unquote(str(url)) #urldecoded urldecoded.decode('utf-8')
Офлайн
Проще…
import urllib url='http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213' print urllib.unquote(url).decode('utf8')
Офлайн
wbt
Я опоздал :)
Пока набирал :)
Отредактировано 4kpt (Авг. 27, 2013 12:21:37)
Офлайн
4kpt
url='http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213'
Офлайн
Опять я что-то не врубился.
import json import urllib str_from_file = '{"url": "http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213"}' json_obj = json.loads(str_from_file) print json_obj url = json_obj['url'] print url urldecoded = urllib.unquote(url).decode("utf-8") print urldecoded
>>> {'url': 'http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213'} http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213 http://yandex.ru/yandsearch?text=москва&lr=213 >>>
Отредактировано 4kpt (Авг. 27, 2013 13:06:34)
Офлайн
wbt, так получилось, спасибо. Не догадался изначальный URL привести к str… Интересно, почему сам питон в результате выдает невалидный объект такой.
Офлайн
Что-то здесь не то :)
import json import urllib str_from_file = '{"url": "http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213"}' json_obj = json.loads(str_from_file) print json_obj url = json_obj['url'] print type(url)
{'url': 'http://yandex.ru/yandsearch?text=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&lr=213'}
<type 'str'>
Отредактировано 4kpt (Авг. 27, 2013 12:31:05)
Офлайн