Seite 1 von 2

Verfasst: Freitag 20. März 2009, 08:36
von BlackJack
@#cousin#: Vielleicht solltest Du Dich mal mit Funktionen auseinandersetzen, um die Teillösungen sauber zu trennen und wiederverwendbar zu machen.

Und für Zeiten und Datumsangaben gibt es zum einen das `datetime`-Modul und zum anderen hätte man auch Deine manuelle Methode mit Zeichenkettenformatierung über den ``%``-Operator auf Zeichenketten wesentlich kompakter hinbekommen. Ungetestet:

Code: Alles auswählen

year, month, day, hour, minute = struct.unpack('>H4B', line.decode('hex'))
print 'Date and time: %d-%02d-%02d  %02d:%02d' % (year, month, day, hour, minute)

Verfasst: Sonntag 29. März 2009, 13:44
von #cousin#
Hi Zusammen,

die Hinweise zu dem date-time-modul habe ich nun ebenfalls einfließen lassen, vielen Dank für den Hinweis.

Aber ich habe gerade bemerkt, dass ich ein anderes Problem habe. Die Funktion:

Code: Alles auswählen

asciiString = filter(lambda x: x in string.printable, asciiString)
filtert mir zwar alle Werte raus, die Steuerzeichen enthalten, aber leider auch Umlaute und ß.

Wie kann ich die filterfunktion dazu bringen, dass er mir diese Zeichen nicht filtert?

Verfasst: Sonntag 29. März 2009, 14:05
von BlackJack
@#cousin#: Falls die Daten in einer 1-Byte-pro-Buchstabe-Kodierung vorliegen, einfach `string.printable` plus die zusätzlichen Bytewerte für die Zeichen für den Test verwenden!?

Dann solltest Du aber den Namen `asciiString` ändern, denn ASCII enthält keine Umlaute.

Verfasst: Sonntag 29. März 2009, 16:07
von #cousin#
ok, danke, habs nun so gemacht:

Code: Alles auswählen

asciiString = filter(lambda x: x in string.printable or x == "\xdf" or x == "\xfc" or x == "\xf6" or x == "\xe4" or x == "\xdc" or x == "\xd6" or x == "\xc4", asciiString)
kann ich das mit nem Array, oder mit ner Liste irgendwie verkürzen?

Verfasst: Sonntag 29. März 2009, 17:15
von HWK
Statt

Code: Alles auswählen

x == 'a' or x == 'b' or x == 'c'
lieber

Code: Alles auswählen

x in 'abc'
MfG
HWK

Verfasst: Sonntag 29. März 2009, 17:43
von #cousin#
vielen Dank, das macht es bedeutend übersichtlicher

Verfasst: Sonntag 29. März 2009, 19:28
von str1442

Code: Alles auswählen

x in 'abc'
Statt dem würde ich aber eher einen Tupel mit den einzelnen Zeichen benutzen, einen String einfach als Sequenz für "nicht-veränderliche, fest definierte, heterogene Daten" zu benutzen finde ich etwas unpassend, rein semantisch.