Skip to main content
 首页 » 编程设计

python之一个对象的 Unicode 表示回到一个对象(在 python 中)

2025年05月04日27freeliver54

仅供引用 - 这是一个使用 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__() 返回)恢复到对象本身。

想法?

我在 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')