Como iterar corretamente com re.sub () em Python
Eu quero fazer um script Python que cria notas de rodapé. A ideia é encontrar todas as strings do tipo"Some body text.{^}{Some footnote text.}"
e substituí-los por"Some body text.^#"
, Onde"^#"
é o número correto da nota de rodapé. (Uma parte diferente do meu script lida com as notas de rodapé na parte inferior do arquivo.) O código atual que estou usando para isso é:
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)
Isso funciona bem, mas parece estranho ter que declarar uma variável (i
) fora dacreate_footnote_numbers
função e, em seguida, tem que chamá-lo dentro dessa função. Eu teria pensado que haveria algo dentrore
que retornaria o número da partida.