Unicode представление объекта обратно в объект (в Python)
К вашему сведению - эта программа использует Django, но я НЕ помечаю ее как таковую, потому что это не проблема Django. Код Django здесь для контекста
~~ Фон ~~
Я обнаружил ошибку, которая была у меня в программе. Короче я пользуюсь urlparse.urlparse
получить информацию из заданного URI и сохранить ее в базе данных.
Цель состоит в том, чтобы сделать что-то вроде этого:
url = urlparse.urlparse('http://somedomain.com/yada/yada')
some_instance = Domain(address=url.netloc)
~~ Проблема ~~
Проблема в том, что из-за ошибки в кодировании база данных полна urlparse
объект. Поэтому при вызове экземпляра из базы данных результатом является строка в кодировке Unicode:
some_instance = Domain.objects.get(pk=XX)
some_instance.address
>>> u"ParseResult(scheme=u'http', netloc=u'www.somedomain.com', path=u'/', params='', query=u'_vsrefdom=googleppc', fragment='')"
К сожалению.
~~ Вопрос ~~
Очевидно, мне нужно вернуться и исправить ряд записей. Что мне любопытно узнать, есть ли хороший питонный способ восстановить представление объекта в юникоде (не фактическое .__unicode__()
вернуть) обратно в сам объект.
Мысли?
Я немного осмотрелся на Google и Stackru, проблема в том, что при любом поиске я сталкивался со сделками с выводом .__unicode__()
а не само представление в целом.
1 ответ
Для этого вы можете использовать eval
; хотя в целом это осуждают, это приемлемо в этом случае.
>>> from urlparse import ParseResult
>>> s = u"ParseResult(scheme=u'http', netloc=u'www.somedomain.com', path=u'/', params='', query=u'_vsrefdom=googleppc', fragment='')"
>>> pr = eval(s)
>>> pr.scheme, pr.netloc
(u'http', u'www.somedomain.com')