将对象的Unicode表示形式返回到对象中(在python中)

The*_*ter 1 python unicode urlparse python-object

仅供参考 - 这是程序使用Django但我没有标记它因为它不是django问题.django代码在这里用于上下文

~~背景~~

我发现了一个程序中的错误.简而言之,我urlparse.urlparse用来从给定的URI获取信息并将其保存到数据库中.

目标是做这样的事情:

url = urlparse.urlparse('http://somedomain.com/yada/yada')
some_instance = Domain(address=url.netloc)
Run Code Online (Sandbox Code Playgroud)

~~问题~~

问题是由于编码错误,数据库充满了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='')"
Run Code Online (Sandbox Code Playgroud)

哎呀.

~~问题~~

显然,我需要回去修复一些记录.我很想知道的是,是否有一种好的pythonic方法可以将对象的unicode表示(而不是实际.__unicode__()返回)恢复回对象本身.

思考?

我在谷歌和StackOverflow上看了一下,问题是我遇到的任何搜索与输出的交易.__unicode__()而不是整个表示本身.

Ant*_*ala 5

为此你可以使用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')
Run Code Online (Sandbox Code Playgroud)