Wie man mit re () in Python richtig iteriert

Ich möchte ein Python-Skript erstellen, das Fußnoten erstellt. Die Idee ist, alle Saiten dieser Art zu finden"Some body text.{^}{Some footnote text.}" und ersetzen Sie sie durch"Some body text.^#", woher"^#" ist die richtige Fußnotennummer. (Ein anderer Teil meines Skripts befasst sich mit dem tatsächlichen Ausdrucken der Fußnoten am Ende der Datei.) Der aktuelle Code, den ich dafür verwende, ist:

pattern = r"\{\^\}\{(.*?)\}"
i = 0
def create_footnote_numbers(match):
   global i
   i += 1
   return "<sup>"+str(i)+"</sup>"

new_body_text = re.sub(pattern, create_footnote_numbers, text)

Dies funktioniert gut, aber es scheint seltsam, eine Variable deklarieren zu müssen (i) außerhalb voncreate_footnote_numbers Funktion und müssen es dann innerhalb dieser Funktion aufrufen. Ich hätte gedacht, dass da etwas drin sein würdere das würde die Nummer der Übereinstimmung zurückgeben.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage