Python GAE webapp2输出格式

时间:2016-03-21 12:24:49

标签: python google-app-engine webapp2

我现在正在使用来自retrieve的{​​{1}}值NDB,这是一团糟,但似乎有效:

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

IE中。只有没有空格或两者之间的任何值。

编辑1

@Daniel,

实施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()

2 个答案:

答案 0 :(得分:2)

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

values = ''.join(newvalues.content)

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

答案 1 :(得分:1)

使用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'