Liste formatieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo zusammen,

ich mache gerade ein paar Datenbank abfragen
nun komme ich zu einer Spalte mit der aktuellen Uhrzeit.
Als Ergebnis erhalte ich folgende Liste:
[u'2015-11-20 15:11', u'2015-11-20 16:11', u'2015-11-20 17:11', u'2015-11-20 18:11', u'2015-11-20 19:11', u'2015-11-20 20:11', u'2015-11-20 21:11']
damit ich die Daten weiter verarbeiten kann, benötige ich aber folgendes:
[2015-11-20 15:11, 2015-11-20 16:11, 2015-11-20 17:11, 2015-11-20 18:11, 2015-11-20 19:11, 2015-11-20 20:11, 2015-11-20 21:11]

Kann mir jemand sagen wie ich Liste entsprechend formatieren kann?

vielen Dank im voraus
Benutzeravatar
pillmuncher
User
Beiträge: 1485
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Die zweite Liste ist kein gültiges Python:

Code: Alles auswählen

In [1]: [u'2015-11-20 15:11', u'2015-11-20 16:11', u'2015-11-20 17:11', u'2015-11-20 18:11', u'2015-11-20 19:11', u'2015-11-20 20:11', u'2015-11-20 21:11']
Out[1]: 
['2015-11-20 15:11',
 '2015-11-20 16:11',
 '2015-11-20 17:11',
 '2015-11-20 18:11',
 '2015-11-20 19:11',
 '2015-11-20 20:11',
 '2015-11-20 21:11']

In [2]: [2015-11-20 15:11, 2015-11-20 16:11, 2015-11-20 17:11, 2015-11-20 18:11, 2015-11-20 19:11, 2015-11-20 20:11, 2015-11-20 21:11]
  File "<ipython-input-2-e0f6f4e70c79>", line 1
    [2015-11-20 15:11, 2015-11-20 16:11, 2015-11-20 17:11, 2015-11-20 18:11, 2015-11-20 19:11, 2015-11-20 20:11, 2015-11-20 21:11]
                 ^
SyntaxError: invalid syntax
Was willst du denn eigentlich tun? Sollen die Daten von Unicode Strings in datetime-Objekte umgewandelt werden?
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich rate mal, dass du ueber den "u" Praefix stolperst. Das liegt daran, dass ein `print(list)` die `repr` Darstellung der Listenelemente zeigt und die sieht nunmal so aus.

Bleibt nur sich selbst um die gewuenschte Formatierung zu kuemmern:

Code: Alles auswählen

In [1]: xs = [u'2015-11-20 15:11', u'2015-11-20 16:11', u'2015-11-20 17:11', u'2015-11-20 18:11', u'2015-11-20 19:11', u'2015-11-20 20:11', u'2015-11-20 21:11']

In [2]: print '[%s]' % ', '.join(xs)
[2015-11-20 15:11, 2015-11-20 16:11, 2015-11-20 17:11, 2015-11-20 18:11, 2015-11-20 19:11, 2015-11-20 20:11, 2015-11-20 21:11]
Aber ich glaube auch nicht, dass du tatsaechlich _diese_ Ausgabe willst.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo pillmuncher,

du hast recht ich benötige Liste 1
wie kann ich das Datumsformat in einen String umwandeln, also ohne das "u"

vielen Dank
BlackJack

@erdmulch: Das sind Strings, Unicode-Strings, also im Grunde ”echtere” Zeichenketten als das was Du haben willst. Warum willst Du das denn überhaupt? Innerhalb eines Programms das mit Text arbeitet ist Unicode doch eine gute Sache. Und wenn es als Bytes nach ”aussen” soll, dann muss man halt kodieren, beispielsweise mit der `encode()`-Methode.
Sirius3
User
Beiträge: 17794
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: nochmal zwei Schritte zurück. Was ist denn das für eine Datenbank? Datenbanken haben typischerweise verschiedene Datentypen, unter anderem auch für Datum. Bei Abfragen wird das automatisch in Python Datetime-Objekte umgewandelt, die Du bei Bedarf in einen String umwandeln kannst, wenn Du ihn ausgeben willst. Intern solltest Du immer mit Datetime-Objekten arbeiten.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

ich habe mir eine kleine Weboberfläche gebastelt.
das Javascript erwartet die Datumsformate wie folgt:

['2015-11-20 15:11', '2015-11-20 16:11', '2015-11-20 17:11', '2015-11-20 18:11', '2015-11-20 19:11', '2015-11-20 20:11', '2015-11-20 21:11', '2015-11-20 22:11', '2015-11-20 23:11', '2015-11-21 00:11', '2015-11-21 01:11', '2015-11-21 02:11', '2015-11-21 03:11', '2015-11-21 04:11', '2015-11-21 05:11', '2015-11-21 06:11', '2015-11-21 07:11']

und nicht so:

[u'2015-11-20 15:11', u'2015-11-20 16:11', u'2015-11-20 17:11', u'2015-11-20 18:11', u'2015-11-20 19:11', u'2015-11-20 20:11', u'2015-11-20 21:11', u'2015-11-20 22:11', u'2015-11-20 23:11', u'2015-11-21 00:11', u'2015-11-21 01:11', u'2015-11-21 02:11', u'2015-11-21 03:11', u'2015-11-21 04:11', u'2015-11-21 05:11', u'2015-11-21 06:11', u'2015-11-21 07:11']
Sirius3
User
Beiträge: 17794
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: Javascript erwartet die Daten in der Form, in der Du sie in Javascript wieder dekodierst, also üblicherweise in JSON. Dafür gibt es nämlich sowohl auf Python- als auch auf Javascript-Seite Funktionen, die das encodieren und decodieren erledigen.
Benutzeravatar
noisefloor
User
Beiträge: 3875
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

und wir kommt die Liste in / zu den JS-Datei?

BlackJack hat's oben ja schon gesagt: wenn du Bytes brauchst und dein Webframework die Konvertierung nicht automatisch macht, dann musst du halt selber enkodieren.

Gruß, noisefloor
Antworten