Hallo Georg, das war genau der Tipp den ich brauchte. ;-)) Ich danke Dir und wuensche noch einen schoenen Abend. Gruss Martin -----Ursprüngliche Nachricht----- Von: python-de-admin@python.net [mailto:python-de-admin@python.net] Im Auftrag von Georg Mischler Gesendet: Montag, 10. Februar 2003 21:04 An: python-de@python.net Betreff: Re: [Python-de] Aus r'\012' einen Zeilenumbruch ohne if erzeugen Martin Möllenbeck wrote:
Hallo Georg,
in der INI-Datei sollte unter dem Schluessel eine <newline> gespeichert werden.
Auszug aus der INI-Datei: <snip> lineseparator = \012 <snip>
Wenn ich diesem Wert in der Ini-Datei speichere, bekomme ich beim Auslesen den Wert "r'\012'". Jetzt moechte ich aus diesem Text das 'eigentliche' Newline bekommen.
Ah, jetzt verstehe ich... Ein binaeres <newline> ist als Wert in einer solchen Datei nicht moeglich, weil das gleiche Zeichen ja die einzelnen Eintraege voneinander trennt. Du musst also tatsaechlich die explizite Zeichenfolge '\012' da reinschreiben. So weit, so gut. Mir ist allerdings keine eingebaute Funktion bekannt, welche diese Form in die jeweilige binaere Representation umformt. Normalerweise wird sie ja nur als "literal" im Code verwendet. Damit kriegen wir aber auch gleich wieder eine Hintertuer. Wir bauen den String einfach in ein Stueck Code ein, und fuehren diesen direkt aus: def decode_literal(s): statement = compile('value = "%s"' % s, '', 'single') exec statement return value Das ist ein ziemlich fortgeschrittenes Voodoo-Ritual, aber es funktioniert erst mal... Wenn du dabei sicherheitstechnische Bedenken hast (zurecht!), dann solltest du vorher noch dafuer sorgen, dass s keine Klammern, Semikolons oder echte <newline>s etc. enthaelt. Diese wuerden es naemlich moeglich machen, deine Funktion mittels einer untergeschobenen Datei beliebigen Code ausfuehren zu lassen. Das waere dann das Python-Aequivalent der beruehmten Buffer-Overflows in C. Sicher bist du z.B. dann, wenn du nur einen fuehrenden Backslash und nachfolgende Zahlen akzeptierst, was fuer deinen Zweck ja reichen sollte. -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de