re.sub(...,dictionary[\1])
Hallihallo, Hoffentlich kann mir hier einen nen Tip geben. :-) Beispielprogramm: #!/usr/bin/env python import re kat = {'$1': 'Link1', '$2': 'LinkB', '$3': 'LastLink'} text='a $1 b $2 c $3.' text = re.sub(r'(\$[0-9]+)',r'<a href=".?d=\1>kat[\1]</a>"',text) print text Ausgabe: a <a href=".?d=$1>kat[$1]</a>" b <a href=".?d=$2>kat[$2]</a>" c <a href=".?d=$3>kat[$3]</a>". Gewollte Ausgabe: a <a href=".?d=$1>Link1</a>" b <a href=".?d=$2>LinkB</a>" c <a href=".?d=$3>LastLink</a>". Ich will also irgendwie, daß im Ersetzen-String 'kat[\1]' nicht einfach ausgegeben, sondern weiter ersetzt wird. Beispiel: $1 :: kat[\1] -> kat[1] -> Link1 -Falk _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
Falk Friedrich wrote:
Hallihallo,
Hoffentlich kann mir hier einen nen Tip geben. :-)
Beispielprogramm: #!/usr/bin/env python import re kat = {'$1': 'Link1', '$2': 'LinkB', '$3': 'LastLink'} text='a $1 b $2 c $3.' text = re.sub(r'(\$[0-9]+)',r'<a href=".?d=\1>kat[\1]</a>"',text) print text
Ausgabe: a <a href=".?d=$1>kat[$1]</a>" b <a href=".?d=$2>kat[$2]</a>" c <a href=".?d=$3>kat[$3]</a>".
Gewollte Ausgabe: a <a href=".?d=$1>Link1</a>" b <a href=".?d=$2>LinkB</a>" c <a href=".?d=$3>LastLink</a>".
#v+ #!/usr/bin/env python import re kat = {'$1': 'Link1', '$2': 'LinkB', '$3': 'LastLink'} text='a $1 b $2 c $3.' def replaced_link(s): key = s.group(0) return '<a href="%s">kat%s</a>' % (kat[key], key[1:]) text = re.sub(r'(\$[0-9]+)', replaced_link, text) print text #v- Wenn dir das zu gut lesbar ist, kannst du die Funktion durch ein Lambda ersetzen ;-)
Ich will also irgendwie, daß im Ersetzen-String 'kat[\1]' nicht einfach ausgegeben, sondern weiter ersetzt wird. Beispiel: $1 :: kat[\1] -> kat[1] -> Link1
Du kommst wahrscheinlich von einer anderen, RE-lastigen Sprache (Perl?). Ich würde dir empfehlen, im Zweifelsfall die Doku zur gesuchten Funktion (hier re.sub) zu lesen statt anzunehmen, dass es irgendwie genauso gehen wird ;-) Dein Anwendungsfall ist nämlich unter http://www.python.org/doc/current/lib/node99.html sogar mit einem Beispiel beschrieben. Die Syntax der Rückwärtssubstituion von Treffern, die du angegeben hast, gibt es in Python-REs so nicht. -- Gerhard _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
On Thu, 27 Mar 2003 03:13:18 +0100, Falk Friedrich wrote:
Ich will also irgendwie, daß im Ersetzen-String 'kat[\1]' nicht einfach ausgegeben, sondern weiter ersetzt wird. Beispiel: $1 :: kat[\1] -> kat[1] -> Link1
re.sub mit Ersetzungsfunktion (2. Param als Callable). Ciao, Jürgen _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de
participants (3)
-
Falk Friedrich -
Gerhard Haering -
Juergen Hermann