Zeichenkette ersetzen durch eine sich verändernde Variable

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
sil-be
User
Beiträge: 2
Registriert: Samstag 26. Januar 2008, 12:20

Samstag 26. Januar 2008, 12:52

Hallo!

irgendwie kriege ich das nicht hin.
Versuche eine Zeichenkette zu finden und diese durch eine sich verändernde Variable zu ersetzen.

Also in der Art:
num = 1
bub = re.search(r"\S+\s\S+", txt)
if bub:
num = num + 1
txt = re.sub(r"(\S+\s\S+)", "\\1%d und noch ein text" % num, txt)

Das Problem bei dieser Schreibweise ist, dass es nach dem Treffer alle Ersetzungen auf einmal ausführt und somit 'num' immer 2 ist. :-(
VIELEN DANK!!!
BlackJack

Samstag 26. Januar 2008, 12:58

Da in Python Einrückung wichtig für die Bedeutung des Programms ist, wäre es nett, wenn Du den Quelltext mit Einrückung und in code-Tags setzt. Siehe den Python-Button im Formular zum Editieren von Beiträgen.

Man kann bei `re.sub()` auch eine Funktion oder ein anderes aufrufbares Objekt, anstelle einer Zeichenkette für die Ersetzung angeben, die ein Match-Objekt bekommt und den Ersetzungstext zurückgeben muss.

Edit:

Code: Alles auswählen

import re
from itertools import count

def main():
    text = 'Foo # bar # baz ##.'
    get_next_number = count(1).next
    text = re.sub(r'#', lambda m: '<%d>' % get_next_number(), text)
    print text
Ausgabe: ``Foo <1> bar <2> baz <3><4>.``
sil-be
User
Beiträge: 2
Registriert: Samstag 26. Januar 2008, 12:20

Samstag 26. Januar 2008, 14:32

Vielen Dank!!!!!

Genau das habe ich gesucht!

Sorry, nähstes mal editiere ich den Quellcode!
VIELEN DANK!!!
Antworten