2016-03-21 15 views
0

arbeite ich jetzt auf meine retrieve von Werten aus NDB, die ein Chaos, aber es scheint zu funktionieren:Python GAE webapp2 Ausgabe Formatierung

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) 

Das bekommt mir:

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

Ich nehme an, dass ich dieses dict in eine Zeichenkette umwandeln kann und alle unerwünschten Zeichen, wie ersetzen kann:

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

Gibt es einen einfachen/effizienteren Weg?

Der gewünschte Ausgang:

01111111111 

Ie. nur Werte ohne Leerzeichen oder irgendetwas dazwischen.

EDIT 1

@ Daniel,

Nach values= ''.join(newvalues.content) Umsetzung Ich habe jetzt die content Werte:

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

Jetzt muss ich join müssen wieder alle zu kombinieren, ? Außerdem dachte ich, dass die u Unicode-Notation weggeht automagically ...

EDIT 2 Ich weiß nicht, warum dies geschieht.

erhalte ich die 'id' über get_by_id (entfernt den to_dict Teil), versuchte auch:

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

Noch nur immer:

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

EDIT Book Modell:

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

wie sieht Ihr 'Book' Modell aussehen? –

+0

@DanCornilescu, meine Frage bearbeitet, um das zu reflektieren – PyGAE

Antwort

1

Verwenden 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

vielen Dank. Ich habe über Regex ersetzen gedacht, dachte aber, es war nicht sehr "Pythonic" ... und hatte offensichtlich keine Ahnung, wie zu implementieren, Syntax-weise .. Das funktioniert tatsächlich perfekt. – PyGAE

2

Dort scheint kein Grund zu sein, to_dict hier zu verwenden. Nur Zugriff auf das content Feld direkt:

values = ''.join(newvalues.content) 

bearbeiten Das Problem in zu sein scheint, wie Sie den Inhalt in erster Linie schreiben. Aus irgendeinem Grund speichern Sie die Zeichenfolgendarstellung eines Tupels von Zeichenfolgen, anstatt entweder ein wiederholtes Feld zu verwenden, um jede Zeichenfolge separat zu speichern, oder JSON zu verwenden, um eine ordnungsgemäße Serialisierung der Zeichenfolge an erster Stelle zu speichern.