Cómo iterar correctamente con re.sub () en Python

Quiero hacer un script en Python que cree notas al pie. La idea es encontrar todas las cadenas del tipo."Some body text.{^}{Some footnote text.}" y reemplazarlos con"Some body text.^#", dónde"^#" es el número correcto de notas al pie. (Una parte diferente de mi script trata de imprimir realmente las notas al pie en la parte inferior del archivo). El código actual que estoy usando para esto es:

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)

Esto funciona bien, pero parece extraño tener que declarar una variable (i) afuera decreate_footnote_numbers Función y luego hay que llamarla dentro de esa función. Habría pensado que habría algo dentrore Eso devolvería el número del partido.

Respuestas a la pregunta(3)

Su respuesta a la pregunta