2016-03-21 24 views
0

现在我的工作我的价值观的retrieveNDB,这是一个烂摊子,但它似乎是工作:的Python GAE webapp2的输出格式

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')"} 

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

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的符号消失自动地...

EDIT 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() 
+1

请问你的'Book'模型? –

+0

@DanCornilescu,编辑我的问题,以反映 – PyGAE

回答

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' 
+0

非常感谢。 我想过正则表达式替换,但认为它不是很“pythonic”......并且显然不知道如何实现,语法上..这实际上是完美的。 – PyGAE

2

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

values = ''.join(newvalues.content) 

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