Jak poprawnie iterować za pomocą re.sub () w Pythonie

Chcę stworzyć skrypt Pythona, który tworzy przypisy. Chodzi o to, aby znaleźć wszystkie ciągi tego rodzaju"Some body text.{^}{Some footnote text.}" i zastąp je"Some body text.^#", gdzie"^#" jest prawidłowym numerem przypisu. (Inna część mojego skryptu dotyczy rzeczywistego drukowania przypisów na dole pliku.) Bieżący kod, którego używam, to:

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)

Działa to dobrze, ale wydaje się dziwne, że trzeba zadeklarować zmienną (i) na zewnątrzcreate_footnote_numbers funkcja, a następnie musi wywołać ją wewnątrz tej funkcji. Myślałem, że coś będzie w środkure to zwróci numer meczu.

questionAnswers(3)

yourAnswerToTheQuestion