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.
Zeichenkette ersetzen durch eine sich verändernde Variable
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:
Ausgabe: ``Foo <1> bar <2> baz <3><4>.``
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