Chcę, aby skrypt Pythona, który tworzy przypisy. Chodzi o to, aby znaleźć wszystkie ciągi sortowania "Some body text.{^}{Some footnote text.}"
i zastąpić je "Some body text.^#"
, gdzie "^#"
jest właściwą liczbę przypis. (. Inna część mojego skryptu zajmuje się rzeczywiście drukowanie przypisy na końcu pliku) Aktualny kod używam tego jest:Jak prawidłowo iteracyjne z re.sub() w Pythonie
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, aby mieć zadeklarować zmienną (i
) poza funkcją create_footnote_numbers
i następnie wywołać ją wewnątrz tej funkcji. Pomyślałbym, że coś będzie wewnątrz re
, które zwróci numer meczu.
Ciekawe, dziękuję. Dlaczego masz 'start =' w swoim 'def __init __()'? Dlaczego po prostu tego nie pomijać, a następnie utworzyć 'self.count = 1' w' __init __() '? Przepraszam, jeśli to głupie pytanie --- wciąż próbuję zrozumieć, jak klasy działają w Pythonie. – Alan
@Alan: Teraz możesz zrobić "FootnoteNumbers (10)", a twój pierwszy przypis otrzyma ten numer. To miły dodatkowy kawałek elastyczności; możesz to pominąć, jeśli chcesz. –
Och, bardzo miło. Dziękuję Ci. – Alan