仅供参考 - 这是程序使用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='')"
糟糕。
~~问题~~
显然,我需要回去修复一些记录。我很想知道的是,是否有一种好的pythonic方法可以将对象的unicode表示(而不是实际的.__unicode__()
返回)恢复回对象本身。
思想?
我在谷歌和StackOverflow上看了一下,问题是我遇到了.__unicode__()
的输出而不是整个表示本身的任何搜索。
答案 0 :(得分: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')