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.