Tak jak już wspomniał @kretiku;
... zapewne można to zrobić prościej wyrażeniami regularnymi,
np. on-line
import re
with open('nazwa_pliku.csv', 'r') as file:
contents = file.read()
print(contents)
# print(re.sub(r';(\d)(?=;)', r';0\1', contents))
print(re.sub(r';(\d)(?=[^0-9])', r';0\1', contents))
re.sub() to funkcja w Python-ie służąca do wyszukiwania i zamiany wzorców za pomocą wyrażeń regularnych.
re to moduł Python-a dla operacji na wyrażeniach regularnych.
r';(\d)(?=[^0-9])' to wyrażenie regularne, które będzie używane jako wzorzec do wyszukiwania. Jest to wzorzec dla pojedynczej cyfry między dwoma średnikami.
- r na początku oznacza, że łańcuch jest surowy (ang. raw), co oznacza, że backslash-e nie są interpretowane specjalnie przez Python-a.
- ; oznacza średnik, który musi wystąpić przed wyszukiwaną cyfrą.
- (\d) oznacza pojedynczą cyfrę.
- (?=[^0-9]) to wyrażenie (lookahead), które oznacza, że następna pozycja w tekście musi nie być cyfrą.
Znaczenie r';0\1' jest takie, że po znalezieniu pasującego wzorca, zamienia on cyfrę, którą znalazł, na siebie samą, ale z wiodącym zerem, czyli np. 1 na 01.
\1 w zamianie oznacza grupę dopasowania z wyrażenia regularnego.