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')
Другие вопросы по тегам