【问题标题】:Python GAE webapp2 output formattingPython GAE webapp2 输出格式
【发布时间】:2016-03-21 12:24:48
【问题描述】:

我现在正在处理来自NDB 的值的retrieve,这很混乱,但它似乎正在工作:

class retrieve(webapp2.RequestHandler):
        def get(self):
            id=(self.request.get('id'))
            newvalues=Book.get_by_id(id)
            newvalues=Book.to_dict(newvalues)
            newvalues=str(newvalues)
            self.response.write(newvalues)

这让我明白了:

{'content': u"(u'011', u'11', u'11', u'11', u'11')"}

我想我可以将该 dict 转换为字符串并替换所有不需要的字符,如:

newvalues = newvalues.replace ("{'content':","")

有没有简单/更有效的方法?

想要的输出:

01111111111

即。只有没有空格或中间任何东西的值。

编辑 1

@丹尼尔,

实施后values= ''.join(newvalues.content) 我现在有了content 值:

(u'011', u'11', u'11', u'11', u'11')

现在我需要再次join 来合并所有这些吗?另外,我认为u unicode 符号会自动消失...

编辑 2 我不知道为什么会这样。

我通过get_by_id 获得了“id”(删除了to_dict 部分),也尝试过:

 values= ''.join(newvalues.content)
 values=''.join(map(str, values))
 self.response.write (values)

仍然只得到:

(u'011', u'11', u'11', u'11', u'11')

编辑Book模型

class Book(ndb.Model):
        content = ndb.StringProperty()

【问题讨论】:

  • 你的Book 模型看起来怎么样?
  • @DanCornilescu,编辑了我的问题以反映这一点

标签: python google-app-engine webapp2


【解决方案1】:

似乎没有任何理由在这里使用to_dict。只需直接访问content 字段:

values = ''.join(newvalues.content)

编辑问题似乎首先在于您如何编写内容。出于某种原因,您要存储字符串元组的字符串表示形式,而不是使用重复字段分别存储每个字符串,或者首先使用 JSON 存储字符串的正确序列化。

【讨论】:

    【解决方案2】:

    使用re.sub

    >>> d = {'content': u"(u'011', u'11', u'11', u'11', u'11')"}
    >>> re.sub(r'u[\'"]|[\'",()\s]', '', d['content'])
    u'01111111111'
    >>> re.sub(r'u[\'"]|\W', '', d['content'])
    u'01111111111'
    

    【讨论】:

    • 非常感谢。我考虑过替换正则表达式,但认为它不是很“pythonic”......显然不知道如何实现,语法方面......这实际上很完美。
    猜你喜欢
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2016-11-01
    • 2015-03-09
    • 2013-06-29
    • 2012-01-23
    • 2017-05-04
    相关资源
    最近更新 更多