2016-03-21 9 views
0
私は混乱している NDB、からの値の私の retrieveに今働いているが、それは動作しているようだ

の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 

すなわち空白または間に何もない値のみを返します。

EDIT 1

@Daniel、

values= ''.join(newvalues.content) を実装した後、私は今content値います

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

は今、私はすべてのことを組み合わせるために再びjoinする必要がありますか?また、私はなぜこれが起こっているかわからない2

EDIT ... u Unicodeの表記が自動的に消えると思いました。それでものみ取得

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

を::

私は、(to_dict部分を削除)get_by_id 'を介してID' を取得も試み

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

EDIT 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を使用して文字列の適切なシリアル化を格納するのではなく、文字列の組の文字列表現を格納しています。