Bestimmte Zeichen eines Strings in Hex umwandeln

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
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Mittwoch 29. August 2007, 15:36

Hi,
viell kann mir wer helfen, bei mir setzts da aus ;-)
Ich sollte folgende Zeichen eines Strings:
\ / : * ? | < > #
in # und danach den Zeichencode als 2 Stellen Hex verwandeln.
Danke
Stolzi
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Mittwoch 29. August 2007, 15:53

Code: Alles auswählen

>>> ':'.encode('hex')
'3a'
Entspricht in etwa dem hier (für ein Zeichen):

Code: Alles auswählen

>>> ord(':')
58
>>> hex(58)
'0x3a'
Die Zeichen kannst du einfach mit `'einstring'.replace()` ersetzen.
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Mittwoch 29. August 2007, 17:21

Danke dir, war genau was ich suchte. Passt jetzt zwar nicht ganz hier rein, aber wie macht mann denn das am schönsten? Ich meine mit
Ordner=Ordner.replace(":","#"+':'.encode('hex'))
Zeichen für Zeichen durch zu gehen läßt sich sicher schöner bzw kürzer machen?

Viell kannst mir da noch einen Tip geben?

Danke
Stolzi
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Mittwoch 29. August 2007, 17:30

So zum Beispiel:

Code: Alles auswählen

import re
Ordner = re.sub(r"[\\/:*?|<>#]", lambda m: "#"+m.group(0).encode("hex"), Ordner)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Mittwoch 29. August 2007, 18:34

Arg, ok jetzt hab ich was zu knabbern um das zu verstehn. Danke dir ;-)
Antworten