PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sonderzeichen in python escapen



ThorstenS
29-09-2006, 08:18
Hi Leute,
ich möchte in python einen String für einen Emaillink umwandeln und muß dafür die Sonderzeichen wie Leerzeichen und Zeilenumbrüche umwandeln.
Aus

Sehr geehrte Damen und Herren
Soll sowas werden:

Sehr%20geehrte%20Damen%20und%20Herren

Mit welcher Funktion/Modul kann ich sowas realisieren?
Wie kann ich in Zukunft solche Fragen selbst recherchieren - habt ihr gute Seiten für python?

Vielen Dank :)

OpOs
29-09-2006, 08:41
am einfachsten wohl mit string.replace()

eine kurzinfo kriegst du mit
$ python -c "import string;print string.replace.__doc__"

moeglicherweiser gibt's auch schon spezielle funktionen fuer http spezifische maskierungen... weiss ich jetzt nich aus'm kopp...

einfach mal nach "python referenz" googlen, da gibt's 'n schoenes pdf, das iss ganz gut

ThorstenS
29-09-2006, 10:43
Danke, dann begebe ich mich mal auf die Suche.
Wenn jemand die Lösung kennt, bin ich natürlich nach wie vor dankbar dafür :)

Romanday
29-09-2006, 18:47
Danke, dann begebe ich mich mal auf die Suche.
Wenn jemand die Lösung kennt, bin ich natürlich nach wie vor dankbar dafür :)

auf die Schnelle :D

re.sub(" ", "%20", t)

(gibt bestimmt noch viele andere Möglichkeiten ...)

OpOs
29-09-2006, 19:48
das erzeugt aber overhead. solange es nicht um regulaere ausdruecke geht, sollte meinstring.replace(" ","%20") performanter sein...

foobarflu
30-09-2006, 05:44
Die Funktion quote aus dem modul urllib. Kümmert sich sogar um Umlaute.

ThorstenS
11-10-2006, 16:27
>>> v="Danke Schön! Grüße Thorsten"
>>> urllib.quote(v)
'Danke%20Sch%F6n%21%20Gr%FC%DFe%20Thorsten'
traumhaft! Genau das, was ich suchte!

Vielen Dank :)

RapidMax
14-10-2006, 15:45
Nicht vergessen: Batteries included!

Gruss, Andy

ThorstenS
25-10-2006, 09:56
jepp, das ist es was ich bisher an plone.org und zope.org geschätzt habe.
Es gilt aber wirklich auch schon für python :cool:

Joghurt
26-10-2006, 21:40
Ganz Perverse könnten das auch so lösen:
>>> text = "Ich bin vollkommen wahnsinnig!"
>>> print ''.join(["%02X" % x for x in map(ord,text)])
%49%63%68%20%62%69%6E%20%76%6F%6C%6C%6B%6F%6D%6D%6 5%6E%20%77%61%68%6E%73%69%6E%6E%69%67%21
:-P