仅供参考-这是程序使用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表示(不是实际的.__unicode__()返回值)还原回对象本身的良好pythonic方法。

有什么想法吗?

我在Google和StackOverflow上浏览了一下,问题是我遇到的任何搜索都是使用.__unicode__()的输出而不是整个表示本身进行的。

最佳答案

为此,您可以使用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')

关于python - 将对象的Unicode表示重新转换为对象(在python中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36127037/

10-12 04:02