【问题标题】:Unicode representation of an object back into an object (in python)一个对象的Unicode表示回到一个对象(在python中)
【发布时间】:2016-07-07 17:24:57
【问题描述】:

仅供参考 - 这是使用 Django 的程序,但我 NOT 将其标记为这样,因为它不是 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='')"

哎呀。

~~问题~~

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

想法?

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

【问题讨论】:

    标签: python unicode urlparse python-object


    【解决方案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')
    

    【讨论】:

    • 美丽。这就是我需要的。谢谢。 (时间足够时将标记为答案)
    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 2015-11-12
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多