Menu Zamknij

Porównaj styl pisarzy część 9 – Oczyszczanie 3-gramów z niepotrzebnych znaków. Wyrażenia regularne (regex)

W tym rozdziale będziemy pracować na 3-gramach, czyli na trzech kolejno powtarzających się wyrazach w tekście. W rozdziale 5 nauczyłeś się dzielić wyrazy i umieszczać je w liście. W rozdziale 7 nauczyłeś się dzielić listę na trójelementowe kawałki. W rozdziale 4 nauczyłeś się, jak taką trójelementową listę zamienić na trójwyrazowy string. Wreszcie w rozdziale 8 nauczyłeś się łatwego sposobu policzenia częstości występowania elementów listy.

Zacznijmy od podzielenia stringa (w przykładzie zostajemy przy pierwszym rozdziale Księgi Rodzaju) na wyrazy, czyli naszym znakiem rozdzielającym będzie spacja. Wyrazy znajdą się na liście nazwanej wyrazy:

tekst = """
1 Na początku Bóg stworzył niebo i ziemię. 2 Ziemia zaś była bezładem i pustkowiem: ciemność była nad powierzchnią bezmiaru wód, a Duch2 Boży unosił się nad wodami.
3 Wtedy Bóg rzekł: «Niechaj się stanie światłość!» I stała się światłość. 4 Bóg widząc, że światłość jest dobra, oddzielił ją od ciemności. 5 I nazwał Bóg światłość dniem, a ciemność nazwał nocą.
I tak upłynął wieczór i poranek - dzień pierwszy.
6 A potem Bóg rzekł: «Niechaj powstanie sklepienie w środku wód i niechaj ono oddzieli jedne wody od drugich!» 7 Uczyniwszy to sklepienie, Bóg oddzielił wody pod sklepieniem od wód ponad sklepieniem; a gdy tak się stało, 8 Bóg nazwał to sklepienie niebem.
I tak upłynął wieczór i poranek - dzień drugi.
9 A potem Bóg rzekł: «Niechaj zbiorą się wody spod nieba w jedno miejsce i niech się ukaże powierzchnia sucha!» A gdy tak się stało, 10 Bóg nazwał tę suchą powierzchnię ziemią, a zbiorowisko wód nazwał morzem. Bóg widząc, że były dobre, 11 rzekł: «Niechaj ziemia wyda rośliny zielone: trawy dające nasiona, drzewa owocowe rodzące na ziemi według swego gatunku owoce, w których są nasiona». I stało się tak. 12 Ziemia wydała rośliny zielone: trawę dającą nasienie według swego gatunku i drzewa rodzące owoce, w których było nasienie według ich gatunków. A Bóg widział, że były dobre.
13 I tak upłynął wieczór i poranek - dzień trzeci.
14 A potem Bóg rzekł: «Niechaj powstaną ciała niebieskie, świecące na sklepieniu nieba, aby oddzielały dzień od nocy, aby wyznaczały pory roku, dni i lata; 15 aby były ciałami jaśniejącymi na sklepieniu nieba i aby świeciły nad ziemią». I stało się tak. 16 Bóg uczynił dwa duże ciała jaśniejące: większe, aby rządziło dniem, i mniejsze, aby rządziło nocą, oraz gwiazdy. 17 I umieścił je Bóg na sklepieniu nieba, aby świeciły nad ziemią; 18 aby rządziły dniem i nocą i oddzielały światłość od ciemności. A widział Bóg, że były dobre.
19 I tak upłynął wieczór i poranek - dzień czwarty.
20 Potem Bóg rzekł: «Niechaj się zaroją wody od roju istot żywych, a ptactwo niechaj lata nad ziemią, pod sklepieniem nieba!» 21 Tak stworzył Bóg wielkie potwory morskie i wszelkiego rodzaju pływające istoty żywe, którymi zaroiły się wody, oraz wszelkie ptactwo skrzydlate różnego rodzaju. Bóg widząc, że były dobre, 22 pobłogosławił je tymi słowami: «Bądźcie płodne i mnóżcie się, abyście zapełniały wody morskie, a ptactwo niechaj się rozmnaża na ziemi».
23 I tak upłynął wieczór i poranek - dzień piąty.
24 Potem Bóg rzekł: «Niechaj ziemia wyda istoty żywe różnego rodzaju: bydło, zwierzęta pełzające i dzikie zwierzęta według ich rodzajów!» I stało się tak. 25 Bóg uczynił różne rodzaje dzikich zwierząt, bydła i wszelkich zwierząt pełzających po ziemi. I widział Bóg, że były dobre. 26 3A wreszcie rzekł Bóg: «Uczyńmy człowieka na Nasz obraz, podobnego Nam. Niech panuje nad rybami morskimi, nad ptactwem powietrznym, nad bydłem, nad ziemią i nad wszystkimi zwierzętami pełzającymi po ziemi!»
27 Stworzył więc Bóg człowieka na swój obraz,
na obraz Boży go stworzył:
stworzył mężczyznę i niewiastę.
28 Po czym Bóg im błogosławił, mówiąc do nich: «Bądźcie płodni i rozmnażajcie się, abyście zaludnili ziemię i uczynili ją sobie poddaną; abyście panowali nad rybami morskimi, nad ptactwem powietrznym i nad wszystkimi zwierzętami pełzającymi po ziemi». 29 I rzekł Bóg: «Oto wam daję wszelką roślinę przynoszącą ziarno po całej ziemi i wszelkie drzewo, którego owoc ma w sobie nasienie: dla was będą one pokarmem. 30 A dla wszelkiego zwierzęcia polnego i dla wszelkiego ptactwa w powietrzu, i dla wszystkiego, co się porusza po ziemi i ma w sobie pierwiastek życia, będzie pokarmem wszelka trawa zielona». I stało się tak. 31 A Bóg widział, że wszystko, co uczynił, było bardzo dobre.
I tak upłynął wieczór i poranek - dzień szósty.
"""

wyrazy = tekst.split()
print(wyrazy[:50])

W 1 linijce pod zmienną tekst podstawiliśmy nasz string. W 21 linijce metodą .split() utworzyłeś listę, gdzie znakiem rozdzielającym elementy listy jest spacja, lista znajduje się pod zmienną wyrazy. W linijce 22, by nie zaśmiecać i nie spowalniać, drukujesz pierwsze 50 elementów listy. Efekt programu jest taki:

======================== RESTART: F:\python38\wpis 9.py ========================
['1', 'Na', 'początku', 'Bóg', 'stworzył', 'niebo', 'i', 'ziemię.', '2', 'Ziemia', 'zaś', 'była', 'bezładem', 'i', 'pustkowiem:', 'ciemność', 'była', 'nad', 'powierzchnią', 'bezmiaru', 'wód,', 'a', 'Duch2', 'Boży', 'unosił', 'się', 'nad', 'wodami.', '3', 'Wtedy', 'Bóg', 'rzekł:', '«Niechaj', 'się', 'stanie', 'światłość!»', 'I', 'stała', 'się', 'światłość.', '4', 'Bóg', 'widząc,', 'że', 'światłość', 'jest', 'dobra,', 'oddzielił', 'ją', 'od']

Teraz trzeba umieścić na liście trzy kolejne wyrazy, a następnie trójelementowe listy zapisać gdzieś, najlepiej na kolejnej liście. Będziemy potrzebować pętli for, metody .append() i musimy zdefiniować pustą listę zanim zacznie się pętla. Pusta lista jest niezbędna, bo inaczej nasza pętla nie będzie wiedzieć do czego ma dodawać wyrazy. Nie możemy pustej listy zdefiniować w pętli, bo przy każdym starcie pętli lista by się nam zerowała. No to do roboty!

tekst = """
1 Na początku Bóg stworzył niebo i ziemię. 2 Ziemia zaś była bezładem i pustkowiem: ciemność była nad powierzchnią bezmiaru wód, a Duch2 Boży unosił się nad wodami.
3 Wtedy Bóg rzekł: «Niechaj się stanie światłość!» I stała się światłość. 4 Bóg widząc, że światłość jest dobra, oddzielił ją od ciemności. 5 I nazwał Bóg światłość dniem, a ciemność nazwał nocą.
I tak upłynął wieczór i poranek - dzień pierwszy.
6 A potem Bóg rzekł: «Niechaj powstanie sklepienie w środku wód i niechaj ono oddzieli jedne wody od drugich!» 7 Uczyniwszy to sklepienie, Bóg oddzielił wody pod sklepieniem od wód ponad sklepieniem; a gdy tak się stało, 8 Bóg nazwał to sklepienie niebem.
I tak upłynął wieczór i poranek - dzień drugi.
9 A potem Bóg rzekł: «Niechaj zbiorą się wody spod nieba w jedno miejsce i niech się ukaże powierzchnia sucha!» A gdy tak się stało, 10 Bóg nazwał tę suchą powierzchnię ziemią, a zbiorowisko wód nazwał morzem. Bóg widząc, że były dobre, 11 rzekł: «Niechaj ziemia wyda rośliny zielone: trawy dające nasiona, drzewa owocowe rodzące na ziemi według swego gatunku owoce, w których są nasiona». I stało się tak. 12 Ziemia wydała rośliny zielone: trawę dającą nasienie według swego gatunku i drzewa rodzące owoce, w których było nasienie według ich gatunków. A Bóg widział, że były dobre.
13 I tak upłynął wieczór i poranek - dzień trzeci.
14 A potem Bóg rzekł: «Niechaj powstaną ciała niebieskie, świecące na sklepieniu nieba, aby oddzielały dzień od nocy, aby wyznaczały pory roku, dni i lata; 15 aby były ciałami jaśniejącymi na sklepieniu nieba i aby świeciły nad ziemią». I stało się tak. 16 Bóg uczynił dwa duże ciała jaśniejące: większe, aby rządziło dniem, i mniejsze, aby rządziło nocą, oraz gwiazdy. 17 I umieścił je Bóg na sklepieniu nieba, aby świeciły nad ziemią; 18 aby rządziły dniem i nocą i oddzielały światłość od ciemności. A widział Bóg, że były dobre.
19 I tak upłynął wieczór i poranek - dzień czwarty.
20 Potem Bóg rzekł: «Niechaj się zaroją wody od roju istot żywych, a ptactwo niechaj lata nad ziemią, pod sklepieniem nieba!» 21 Tak stworzył Bóg wielkie potwory morskie i wszelkiego rodzaju pływające istoty żywe, którymi zaroiły się wody, oraz wszelkie ptactwo skrzydlate różnego rodzaju. Bóg widząc, że były dobre, 22 pobłogosławił je tymi słowami: «Bądźcie płodne i mnóżcie się, abyście zapełniały wody morskie, a ptactwo niechaj się rozmnaża na ziemi».
23 I tak upłynął wieczór i poranek - dzień piąty.
24 Potem Bóg rzekł: «Niechaj ziemia wyda istoty żywe różnego rodzaju: bydło, zwierzęta pełzające i dzikie zwierzęta według ich rodzajów!» I stało się tak. 25 Bóg uczynił różne rodzaje dzikich zwierząt, bydła i wszelkich zwierząt pełzających po ziemi. I widział Bóg, że były dobre. 26 3A wreszcie rzekł Bóg: «Uczyńmy człowieka na Nasz obraz, podobnego Nam. Niech panuje nad rybami morskimi, nad ptactwem powietrznym, nad bydłem, nad ziemią i nad wszystkimi zwierzętami pełzającymi po ziemi!»
27 Stworzył więc Bóg człowieka na swój obraz,
na obraz Boży go stworzył:
stworzył mężczyznę i niewiastę.
28 Po czym Bóg im błogosławił, mówiąc do nich: «Bądźcie płodni i rozmnażajcie się, abyście zaludnili ziemię i uczynili ją sobie poddaną; abyście panowali nad rybami morskimi, nad ptactwem powietrznym i nad wszystkimi zwierzętami pełzającymi po ziemi». 29 I rzekł Bóg: «Oto wam daję wszelką roślinę przynoszącą ziarno po całej ziemi i wszelkie drzewo, którego owoc ma w sobie nasienie: dla was będą one pokarmem. 30 A dla wszelkiego zwierzęcia polnego i dla wszelkiego ptactwa w powietrzu, i dla wszystkiego, co się porusza po ziemi i ma w sobie pierwiastek życia, będzie pokarmem wszelka trawa zielona». I stało się tak. 31 A Bóg widział, że wszystko, co uczynił, było bardzo dobre.
I tak upłynął wieczór i poranek - dzień szósty.
"""

wyrazy = tekst.split()
lista_trojlist = []

for indeks in range(len(wyrazy) - 2):
    lista_trojlist.append(wyrazy[indeks:indeks + 3])

print(lista_trojlist[:50])

W 22 linijce definiujesz pustą listę nazwaną lista_trojlist, to na niej znajdować się będą listy zawierające trzy kolejne słowa. W 24 linijce zaczyna się pętla, która działa w zakresie od 0 do długości listy – 2. W 25 linijce do listy lista_trojlist metodą .append() dodajemy trzy słowa posługując się indeksami listy wyrazy. W 27 linijce drukujemy pierwsze 50 elementów, by potwierdzić czy nasz program działa jak powinien. Sprawdźmy jaki jest jego efekt:

======================== RESTART: F:\python38\wpis 9.py ========================
[['1', 'Na', 'początku'], ['Na', 'początku', 'Bóg'], ['początku', 'Bóg', 'stworzył'], ['Bóg', 'stworzył', 'niebo'], ['stworzył', 'niebo', 'i'], ['niebo', 'i', 'ziemię.'], ['i', 'ziemię.', '2'], ['ziemię.', '2', 'Ziemia'], ['2', 'Ziemia', 'zaś'], ['Ziemia', 'zaś', 'była'], ['zaś', 'była', 'bezładem'], ['była', 'bezładem', 'i'], ['bezładem', 'i', 'pustkowiem:'], ['i', 'pustkowiem:', 'ciemność'], ['pustkowiem:', 'ciemność', 'była'], ['ciemność', 'była', 'nad'], ['była', 'nad', 'powierzchnią'], ['nad', 'powierzchnią', 'bezmiaru'], ['powierzchnią', 'bezmiaru', 'wód,'], ['bezmiaru', 'wód,', 'a'], ['wód,', 'a', 'Duch2'], ['a', 'Duch2', 'Boży'], ['Duch2', 'Boży', 'unosił'], ['Boży', 'unosił', 'się'], ['unosił', 'się', 'nad'], ['się', 'nad', 'wodami.'], ['nad', 'wodami.', '3'], ['wodami.', '3', 'Wtedy'], ['3', 'Wtedy', 'Bóg'], ['Wtedy', 'Bóg', 'rzekł:'], ['Bóg', 'rzekł:', '«Niechaj'], ['rzekł:', '«Niechaj', 'się'], ['«Niechaj', 'się', 'stanie'], ['się', 'stanie', 'światłość!»'], ['stanie', 'światłość!»', 'I'], ['światłość!»', 'I', 'stała'], ['I', 'stała', 'się'], ['stała', 'się', 'światłość.'], ['się', 'światłość.', '4'], ['światłość.', '4', 'Bóg'], ['4', 'Bóg', 'widząc,'], ['Bóg', 'widząc,', 'że'], ['widząc,', 'że', 'światłość'], ['że', 'światłość', 'jest'], ['światłość', 'jest', 'dobra,'], ['jest', 'dobra,', 'oddzielił'], ['dobra,', 'oddzielił', 'ją'], ['oddzielił', 'ją', 'od'], ['ją', 'od', 'ciemności.'], ['od', 'ciemności.', '5']]
>>> 

Jak widzisz teraz pierwsze 50 elementów to nie pierwsze 50 wyrazów, a pierwsze 50 trójek wyrazów. Dla naszych celów posługiwanie się listą list trójelementowych, jednowyrazowych stringów nie jest najwygodniejsze. Chociażby użycie funkcji Count() może być nieco bardziej skomplikowane. Idealną sytuacją dla nas będzie lista, której elementami są trójwyrazowe stringi. Tu przyda nam się poznana już metoda .join() i lekka modyfikacja programu:

tekst = """
1 Na początku Bóg stworzył niebo i ziemię. 2 Ziemia zaś była bezładem i pustkowiem: ciemność była nad powierzchnią bezmiaru wód, a Duch2 Boży unosił się nad wodami.
3 Wtedy Bóg rzekł: «Niechaj się stanie światłość!» I stała się światłość. 4 Bóg widząc, że światłość jest dobra, oddzielił ją od ciemności. 5 I nazwał Bóg światłość dniem, a ciemność nazwał nocą.
I tak upłynął wieczór i poranek - dzień pierwszy.
6 A potem Bóg rzekł: «Niechaj powstanie sklepienie w środku wód i niechaj ono oddzieli jedne wody od drugich!» 7 Uczyniwszy to sklepienie, Bóg oddzielił wody pod sklepieniem od wód ponad sklepieniem; a gdy tak się stało, 8 Bóg nazwał to sklepienie niebem.
I tak upłynął wieczór i poranek - dzień drugi.
9 A potem Bóg rzekł: «Niechaj zbiorą się wody spod nieba w jedno miejsce i niech się ukaże powierzchnia sucha!» A gdy tak się stało, 10 Bóg nazwał tę suchą powierzchnię ziemią, a zbiorowisko wód nazwał morzem. Bóg widząc, że były dobre, 11 rzekł: «Niechaj ziemia wyda rośliny zielone: trawy dające nasiona, drzewa owocowe rodzące na ziemi według swego gatunku owoce, w których są nasiona». I stało się tak. 12 Ziemia wydała rośliny zielone: trawę dającą nasienie według swego gatunku i drzewa rodzące owoce, w których było nasienie według ich gatunków. A Bóg widział, że były dobre.
13 I tak upłynął wieczór i poranek - dzień trzeci.
14 A potem Bóg rzekł: «Niechaj powstaną ciała niebieskie, świecące na sklepieniu nieba, aby oddzielały dzień od nocy, aby wyznaczały pory roku, dni i lata; 15 aby były ciałami jaśniejącymi na sklepieniu nieba i aby świeciły nad ziemią». I stało się tak. 16 Bóg uczynił dwa duże ciała jaśniejące: większe, aby rządziło dniem, i mniejsze, aby rządziło nocą, oraz gwiazdy. 17 I umieścił je Bóg na sklepieniu nieba, aby świeciły nad ziemią; 18 aby rządziły dniem i nocą i oddzielały światłość od ciemności. A widział Bóg, że były dobre.
19 I tak upłynął wieczór i poranek - dzień czwarty.
20 Potem Bóg rzekł: «Niechaj się zaroją wody od roju istot żywych, a ptactwo niechaj lata nad ziemią, pod sklepieniem nieba!» 21 Tak stworzył Bóg wielkie potwory morskie i wszelkiego rodzaju pływające istoty żywe, którymi zaroiły się wody, oraz wszelkie ptactwo skrzydlate różnego rodzaju. Bóg widząc, że były dobre, 22 pobłogosławił je tymi słowami: «Bądźcie płodne i mnóżcie się, abyście zapełniały wody morskie, a ptactwo niechaj się rozmnaża na ziemi».
23 I tak upłynął wieczór i poranek - dzień piąty.
24 Potem Bóg rzekł: «Niechaj ziemia wyda istoty żywe różnego rodzaju: bydło, zwierzęta pełzające i dzikie zwierzęta według ich rodzajów!» I stało się tak. 25 Bóg uczynił różne rodzaje dzikich zwierząt, bydła i wszelkich zwierząt pełzających po ziemi. I widział Bóg, że były dobre. 26 3A wreszcie rzekł Bóg: «Uczyńmy człowieka na Nasz obraz, podobnego Nam. Niech panuje nad rybami morskimi, nad ptactwem powietrznym, nad bydłem, nad ziemią i nad wszystkimi zwierzętami pełzającymi po ziemi!»
27 Stworzył więc Bóg człowieka na swój obraz,
na obraz Boży go stworzył:
stworzył mężczyznę i niewiastę.
28 Po czym Bóg im błogosławił, mówiąc do nich: «Bądźcie płodni i rozmnażajcie się, abyście zaludnili ziemię i uczynili ją sobie poddaną; abyście panowali nad rybami morskimi, nad ptactwem powietrznym i nad wszystkimi zwierzętami pełzającymi po ziemi». 29 I rzekł Bóg: «Oto wam daję wszelką roślinę przynoszącą ziarno po całej ziemi i wszelkie drzewo, którego owoc ma w sobie nasienie: dla was będą one pokarmem. 30 A dla wszelkiego zwierzęcia polnego i dla wszelkiego ptactwa w powietrzu, i dla wszystkiego, co się porusza po ziemi i ma w sobie pierwiastek życia, będzie pokarmem wszelka trawa zielona». I stało się tak. 31 A Bóg widział, że wszystko, co uczynił, było bardzo dobre.
I tak upłynął wieczór i poranek - dzień szósty.
"""

wyrazy = tekst.split()
lista_trzech_wyrazow = []

for indeks in range(len(wyrazy) - 2):
    trzy_wyrazy = " ".join(wyrazy[indeks:indeks + 3])
    lista_trzech_wyrazow.append(trzy_wyrazy)

print(lista_trzech_wyrazow[:50])

W 22 linijce zmieniliśmy nazwę pustej listy, dobrze nazywać zmienne tak, by nie wprowadzały w błąd. W linijce 25, pod zmienną trzy_wyrazy przygotowujemy metodą .join() string, który składa się z trzech kolejnych elementów listy wyrazy, a elementy w stringu rozdzielane są spacją. W linijce 26 do listy lista_trzech_wyrazow dodajemy string składający się z 3 wyrazów (a nie listę z trzech elementów jak w poprzedniej wersji). W linijce 28 drukujemy znów pierwsze 50 elementów poprawionej listy. Zobaczmy efekt:

======================== RESTART: F:\python38\wpis 9.py ========================
['1 Na początku', 'Na początku Bóg', 'początku Bóg stworzył', 'Bóg stworzył niebo', 'stworzył niebo i', 'niebo i ziemię.', 'i ziemię. 2', 'ziemię. 2 Ziemia', '2 Ziemia zaś', 'Ziemia zaś była', 'zaś była bezładem', 'była bezładem i', 'bezładem i pustkowiem:', 'i pustkowiem: ciemność', 'pustkowiem: ciemność była', 'ciemność była nad', 'była nad powierzchnią', 'nad powierzchnią bezmiaru', 'powierzchnią bezmiaru wód,', 'bezmiaru wód, a', 'wód, a Duch2', 'a Duch2 Boży', 'Duch2 Boży unosił', 'Boży unosił się', 'unosił się nad', 'się nad wodami.', 'nad wodami. 3', 'wodami. 3 Wtedy', '3 Wtedy Bóg', 'Wtedy Bóg rzekł:', 'Bóg rzekł: «Niechaj', 'rzekł: «Niechaj się', '«Niechaj się stanie', 'się stanie światłość!»', 'stanie światłość!» I', 'światłość!» I stała', 'I stała się', 'stała się światłość.', 'się światłość. 4', 'światłość. 4 Bóg', '4 Bóg widząc,', 'Bóg widząc, że', 'widząc, że światłość', 'że światłość jest', 'światłość jest dobra,', 'jest dobra, oddzielił', 'dobra, oddzielił ją', 'oddzielił ją od', 'ją od ciemności.', 'od ciemności. 5']
>>> 

Nie jest źle, ale mamy wciąż kilka spraw, które nam przeszkadzają. Po pierwsze zupełnie nam nie są potrzebne wielkie i małe litery. Przy sprawdzaniu powtarzających się wyrażeń nie interesuje nas, czy pojawiają się na początku zdania czy też w środku. Do zmiany wszystkich liter na małe użyjesz metody .lower(). Tej metody używa się na tekstowym typie danych. Popatrz na przykład:

>>> tekst = "To jest tekst. Ma CZASEM wielkie litery."
>>> tekst = tekst.lower()
>>> print(tekst)
to jest tekst. ma czasem wielkie litery.
>>> 

Zastosujmy takie rozwiązanie w naszym programie:

tekst = """
1 Na początku Bóg stworzył niebo i ziemię. 2 Ziemia zaś była bezładem i pustkowiem: ciemność była nad powierzchnią bezmiaru wód, a Duch2 Boży unosił się nad wodami.
3 Wtedy Bóg rzekł: «Niechaj się stanie światłość!» I stała się światłość. 4 Bóg widząc, że światłość jest dobra, oddzielił ją od ciemności. 5 I nazwał Bóg światłość dniem, a ciemność nazwał nocą.
I tak upłynął wieczór i poranek - dzień pierwszy.
6 A potem Bóg rzekł: «Niechaj powstanie sklepienie w środku wód i niechaj ono oddzieli jedne wody od drugich!» 7 Uczyniwszy to sklepienie, Bóg oddzielił wody pod sklepieniem od wód ponad sklepieniem; a gdy tak się stało, 8 Bóg nazwał to sklepienie niebem.
I tak upłynął wieczór i poranek - dzień drugi.
9 A potem Bóg rzekł: «Niechaj zbiorą się wody spod nieba w jedno miejsce i niech się ukaże powierzchnia sucha!» A gdy tak się stało, 10 Bóg nazwał tę suchą powierzchnię ziemią, a zbiorowisko wód nazwał morzem. Bóg widząc, że były dobre, 11 rzekł: «Niechaj ziemia wyda rośliny zielone: trawy dające nasiona, drzewa owocowe rodzące na ziemi według swego gatunku owoce, w których są nasiona». I stało się tak. 12 Ziemia wydała rośliny zielone: trawę dającą nasienie według swego gatunku i drzewa rodzące owoce, w których było nasienie według ich gatunków. A Bóg widział, że były dobre.
13 I tak upłynął wieczór i poranek - dzień trzeci.
14 A potem Bóg rzekł: «Niechaj powstaną ciała niebieskie, świecące na sklepieniu nieba, aby oddzielały dzień od nocy, aby wyznaczały pory roku, dni i lata; 15 aby były ciałami jaśniejącymi na sklepieniu nieba i aby świeciły nad ziemią». I stało się tak. 16 Bóg uczynił dwa duże ciała jaśniejące: większe, aby rządziło dniem, i mniejsze, aby rządziło nocą, oraz gwiazdy. 17 I umieścił je Bóg na sklepieniu nieba, aby świeciły nad ziemią; 18 aby rządziły dniem i nocą i oddzielały światłość od ciemności. A widział Bóg, że były dobre.
19 I tak upłynął wieczór i poranek - dzień czwarty.
20 Potem Bóg rzekł: «Niechaj się zaroją wody od roju istot żywych, a ptactwo niechaj lata nad ziemią, pod sklepieniem nieba!» 21 Tak stworzył Bóg wielkie potwory morskie i wszelkiego rodzaju pływające istoty żywe, którymi zaroiły się wody, oraz wszelkie ptactwo skrzydlate różnego rodzaju. Bóg widząc, że były dobre, 22 pobłogosławił je tymi słowami: «Bądźcie płodne i mnóżcie się, abyście zapełniały wody morskie, a ptactwo niechaj się rozmnaża na ziemi».
23 I tak upłynął wieczór i poranek - dzień piąty.
24 Potem Bóg rzekł: «Niechaj ziemia wyda istoty żywe różnego rodzaju: bydło, zwierzęta pełzające i dzikie zwierzęta według ich rodzajów!» I stało się tak. 25 Bóg uczynił różne rodzaje dzikich zwierząt, bydła i wszelkich zwierząt pełzających po ziemi. I widział Bóg, że były dobre. 26 3A wreszcie rzekł Bóg: «Uczyńmy człowieka na Nasz obraz, podobnego Nam. Niech panuje nad rybami morskimi, nad ptactwem powietrznym, nad bydłem, nad ziemią i nad wszystkimi zwierzętami pełzającymi po ziemi!»
27 Stworzył więc Bóg człowieka na swój obraz,
na obraz Boży go stworzył:
stworzył mężczyznę i niewiastę.
28 Po czym Bóg im błogosławił, mówiąc do nich: «Bądźcie płodni i rozmnażajcie się, abyście zaludnili ziemię i uczynili ją sobie poddaną; abyście panowali nad rybami morskimi, nad ptactwem powietrznym i nad wszystkimi zwierzętami pełzającymi po ziemi». 29 I rzekł Bóg: «Oto wam daję wszelką roślinę przynoszącą ziarno po całej ziemi i wszelkie drzewo, którego owoc ma w sobie nasienie: dla was będą one pokarmem. 30 A dla wszelkiego zwierzęcia polnego i dla wszelkiego ptactwa w powietrzu, i dla wszystkiego, co się porusza po ziemi i ma w sobie pierwiastek życia, będzie pokarmem wszelka trawa zielona». I stało się tak. 31 A Bóg widział, że wszystko, co uczynił, było bardzo dobre.
I tak upłynął wieczór i poranek - dzień szósty.
"""

tekst = tekst.lower()
wyrazy = tekst.split()
lista_trzech_wyrazow = []

for indeks in range(len(wyrazy) - 2):
    trzy_wyrazy = " ".join(wyrazy[indeks:indeks + 3])
    lista_trzech_wyrazow.append(trzy_wyrazy)

print(lista_trzech_wyrazow[:50])

W 21 linijce pod zmienną tekst podstawiamy zmienną tekst z zastosowaną metodą .lower(). Jak już wiesz nowa zmienna zastąpi starą zmienną, czyli zmienna tekst zawierająca wielkie litery zostanie zastąpiona zmienną tekst bez wielkich liter. Sprawdźmy efekt:

================================ RESTART: F:\python38\wpis 9.py ===============================
['1 na początku', 'na początku bóg', 'początku bóg stworzył', 'bóg stworzył niebo', 'stworzył niebo i', 'niebo i ziemię.', 'i ziemię. 2', 'ziemię. 2 ziemia', '2 ziemia zaś', 'ziemia zaś była', 'zaś była bezładem', 'była bezładem i', 'bezładem i pustkowiem:', 'i pustkowiem: ciemność', 'pustkowiem: ciemność była', 'ciemność była nad', 'była nad powierzchnią', 'nad powierzchnią bezmiaru', 'powierzchnią bezmiaru wód,', 'bezmiaru wód, a', 'wód, a duch2', 'a duch2 boży', 'duch2 boży unosił', 'boży unosił się', 'unosił się nad', 'się nad wodami.', 'nad wodami. 3', 'wodami. 3 wtedy', '3 wtedy bóg', 'wtedy bóg rzekł:', 'bóg rzekł: «niechaj', 'rzekł: «niechaj się', '«niechaj się stanie', 'się stanie światłość!»', 'stanie światłość!» i', 'światłość!» i stała', 'i stała się', 'stała się światłość.', 'się światłość. 4', 'światłość. 4 bóg', '4 bóg widząc,', 'bóg widząc, że', 'widząc, że światłość', 'że światłość jest', 'światłość jest dobra,', 'jest dobra, oddzielił', 'dobra, oddzielił ją', 'oddzielił ją od', 'ją od ciemności.', 'od ciemności. 5']
>>> 

Udało się. Ale mamy jeszcze niepotrzebne znaki, np. numery wierszy ze skopiowanego tekstu, znaki przestankowe, wykrzykniki, coś takiego „»”. Pozbądźmy się tego wszystkiego! Tutaj przyda się biblioteka obsługująca wyrażenia regularne, w skrócie regex. Znajomość wyrażeń regularnych potrafi ułatwić życie w wielu przypadkach. Do naszych celów nie jest potrzebna wybitna znajomość wszystkich możliwości regex. Zróbmy kilka przykładów na rozgrzewkę. W rozgrzewce użyjesz metody .sub(), która pozwala zastąpić znaleziony tekst innym tekstem. Przećwiczymy to w terminalu:

>>> import re
>>> re.sub("1", "", "1 na początku «niechaj się stanie dobra, oddzielił ją")
' na początku «niechaj się stanie dobra, oddzielił ją'
>>>

Co dokładnie zrobiliśmy? Najpierw zaimportowaliśmy potrzebną bibliotekę, która nazywa się re. Następnie wykorzystujemy metodę .sub(). Metoda .sub() przyjmuje takie argumenty .sub(wyrażenie regularne, zamień na, string na którym ma być wykonana zamiana), jak widzisz argumenty są rozdzielane przecinkami. W naszym przypadku wydaliśmy polecenie „zamień 1 na nic (dwa cudzysłowy bez spacji miedzy nimi) w podanym tekście.”. Oczywiście możemy 1 zastąpić czymś innym niż pusty string:

>>> re.sub("1", "pierwszy wers", "1 na początku «niechaj się stanie dobra, oddzielił ją")
'pierwszy wers na początku «niechaj się stanie dobra, oddzielił ją'
>>> 

Możesz podać też więcej niż jeden znak, który chcesz zastąpić innym, ale wtedy trzeba je umieścić w nawiasach kwadratowych [] między cudzysłowami. W naszym przykładowym tekście chcesz usunąć trzy znaki: cyfrę 1, przecinek i «. Zróbmy to!

>>> re.sub("[1,«]", "", "1 na początku «niechaj się stanie dobra, oddzielił ją")
' na początku niechaj się stanie dobra oddzielił ją'
>>> 

Działa jak chcemy, problem jest taki, że nigdy nie wiesz ile i jakich znaków będziesz chcieć się pozbyć. Zobacz chociażby, ile może być różnych łączników, i musiałbyś pamiętać o podaniu każdego z nich. Za to zawsze wiesz, jakie znaki chcesz zostawić, w naszym zadaniu potrzebne są słowa, więc chcesz zostawić tylko litery. Regex umożliwia podanie nie tylko poszczególnych znaków, ale też zakresu znaków, np. [a-z], co oznacza wszystkie małe litery od a do z. Wpiszmy takie wyrażenie w nasz przykład:

>>> re.sub("[a-z]", "", "1 na początku «niechaj się stanie dobra, oddzielił ją")
'1  ą « ę  , ł ą'
>>> 

Powyżej użyłeś metody .sub() do usunięcia (zastąpienia pustym stringiem) wszystkich znaków, które są z zakresu liter od a do z. Nas interesuje coś przeciwnego, chcemy zostawić znaki z zakresu a-z. W regex możemy zastosować znak ^ jako zaprzeczenie, czyli pisząc [^a-z], mówimy „zastąp wszystkie znaki, które nie są z zakresu liter od a do z”. Przetestujmy!:

>>> re.sub("[^a-z]", "", "1 na początku «niechaj się stanie dobra, oddzielił ją")
'napocztkuniechajsistaniedobraoddzielij'

No tak, zapomnieliśmy o spacji, dodajmy ją po literze z:

>>> re.sub("[^a-z ]", "", "1 na początku «niechaj się stanie dobra, oddzielił ją")
' na pocztku niechaj si stanie dobra oddzieli j'
>>> 

Jak widzisz regex nie lubi się zbytnio z polskimi znakami, musimy dodać je wszystkie do wyrażenia:

>>> re.sub("[^a-z ąćęłńóśóżź]", "", "1 na początku «niechaj się stanie dobra, oddzielił ją")
' na początku niechaj się stanie dobra oddzielił ją'
>>> 

Jesteśmy już prawie zadowoleni. Pozostaje problem wielokrotnych spacji, które zostają nam po usunięciu niepotrzebnych znaków, popatrz na taki przykład:

>>> re.sub("[^a-z ąćęłńóśóżź]", "", "nie, 12 razy 12. 11 razy 12")
'nie  razy   razy '
>>> 

Mamy tutaj problem wielokrotnych spacji. Można się z nim uporać również wyrażeniem regularnym w postaci znaku plus +. Plus + oznacza powtórzenie. Czyli pisząc ” +” informujesz, by metoda .sub() zrobiła coś z jedną lub większą liczbą spacji. My chcemy by dowolna liczba spacji (w tym jedna) zostały zamienione na pojedyncza spację. Przetestujmy:

>>> re.sub(" +", " ", "nie  razy   razy ")
'nie razy razy '
>>> 

Zadziałało! ostatnia spacja nam nie przeszkadza i nie musimy się jej pozbywać. Użyjmy całej naszej nowej wiedzy w pisanym programie:

import re

tekst = """
1 Na początku Bóg stworzył niebo i ziemię. 2 Ziemia zaś była bezładem i pustkowiem: ciemność była nad powierzchnią bezmiaru wód, a Duch2 Boży unosił się nad wodami.
3 Wtedy Bóg rzekł: «Niechaj się stanie światłość!» I stała się światłość. 4 Bóg widząc, że światłość jest dobra, oddzielił ją od ciemności. 5 I nazwał Bóg światłość dniem, a ciemność nazwał nocą.
I tak upłynął wieczór i poranek - dzień pierwszy.
6 A potem Bóg rzekł: «Niechaj powstanie sklepienie w środku wód i niechaj ono oddzieli jedne wody od drugich!» 7 Uczyniwszy to sklepienie, Bóg oddzielił wody pod sklepieniem od wód ponad sklepieniem; a gdy tak się stało, 8 Bóg nazwał to sklepienie niebem.
I tak upłynął wieczór i poranek - dzień drugi.
9 A potem Bóg rzekł: «Niechaj zbiorą się wody spod nieba w jedno miejsce i niech się ukaże powierzchnia sucha!» A gdy tak się stało, 10 Bóg nazwał tę suchą powierzchnię ziemią, a zbiorowisko wód nazwał morzem. Bóg widząc, że były dobre, 11 rzekł: «Niechaj ziemia wyda rośliny zielone: trawy dające nasiona, drzewa owocowe rodzące na ziemi według swego gatunku owoce, w których są nasiona». I stało się tak. 12 Ziemia wydała rośliny zielone: trawę dającą nasienie według swego gatunku i drzewa rodzące owoce, w których było nasienie według ich gatunków. A Bóg widział, że były dobre.
13 I tak upłynął wieczór i poranek - dzień trzeci.
14 A potem Bóg rzekł: «Niechaj powstaną ciała niebieskie, świecące na sklepieniu nieba, aby oddzielały dzień od nocy, aby wyznaczały pory roku, dni i lata; 15 aby były ciałami jaśniejącymi na sklepieniu nieba i aby świeciły nad ziemią». I stało się tak. 16 Bóg uczynił dwa duże ciała jaśniejące: większe, aby rządziło dniem, i mniejsze, aby rządziło nocą, oraz gwiazdy. 17 I umieścił je Bóg na sklepieniu nieba, aby świeciły nad ziemią; 18 aby rządziły dniem i nocą i oddzielały światłość od ciemności. A widział Bóg, że były dobre.
19 I tak upłynął wieczór i poranek - dzień czwarty.
20 Potem Bóg rzekł: «Niechaj się zaroją wody od roju istot żywych, a ptactwo niechaj lata nad ziemią, pod sklepieniem nieba!» 21 Tak stworzył Bóg wielkie potwory morskie i wszelkiego rodzaju pływające istoty żywe, którymi zaroiły się wody, oraz wszelkie ptactwo skrzydlate różnego rodzaju. Bóg widząc, że były dobre, 22 pobłogosławił je tymi słowami: «Bądźcie płodne i mnóżcie się, abyście zapełniały wody morskie, a ptactwo niechaj się rozmnaża na ziemi».
23 I tak upłynął wieczór i poranek - dzień piąty.
24 Potem Bóg rzekł: «Niechaj ziemia wyda istoty żywe różnego rodzaju: bydło, zwierzęta pełzające i dzikie zwierzęta według ich rodzajów!» I stało się tak. 25 Bóg uczynił różne rodzaje dzikich zwierząt, bydła i wszelkich zwierząt pełzających po ziemi. I widział Bóg, że były dobre. 26 3A wreszcie rzekł Bóg: «Uczyńmy człowieka na Nasz obraz, podobnego Nam. Niech panuje nad rybami morskimi, nad ptactwem powietrznym, nad bydłem, nad ziemią i nad wszystkimi zwierzętami pełzającymi po ziemi!»
27 Stworzył więc Bóg człowieka na swój obraz,
na obraz Boży go stworzył:
stworzył mężczyznę i niewiastę.
28 Po czym Bóg im błogosławił, mówiąc do nich: «Bądźcie płodni i rozmnażajcie się, abyście zaludnili ziemię i uczynili ją sobie poddaną; abyście panowali nad rybami morskimi, nad ptactwem powietrznym i nad wszystkimi zwierzętami pełzającymi po ziemi». 29 I rzekł Bóg: «Oto wam daję wszelką roślinę przynoszącą ziarno po całej ziemi i wszelkie drzewo, którego owoc ma w sobie nasienie: dla was będą one pokarmem. 30 A dla wszelkiego zwierzęcia polnego i dla wszelkiego ptactwa w powietrzu, i dla wszystkiego, co się porusza po ziemi i ma w sobie pierwiastek życia, będzie pokarmem wszelka trawa zielona». I stało się tak. 31 A Bóg widział, że wszystko, co uczynił, było bardzo dobre.
I tak upłynął wieczór i poranek - dzień szósty.
"""

tekst = tekst.lower()
tekst = re.sub("[^a-z ąćęłńóśóżź]", "", tekst)
tekst = re.sub(" +", " ", tekst)
wyrazy = tekst.split()
lista_trzech_wyrazow = []

for indeks in range(len(wyrazy) - 2):
    trzy_wyrazy = " ".join(wyrazy[indeks:indeks + 3])
    lista_trzech_wyrazow.append(trzy_wyrazy)

print(lista_trzech_wyrazow[:50])

W 1 linijce importujesz potrzebną bibliotekę obsługującą wyrażenia regularne. W 24 linijce usuwasz z tekstu wszystko, co nie jest spacjami i polskimi znakami. W 25 linijce zamieniasz wszystkie wielokrotne spacje na pojedyncze. Reszta programu się nie zmienia. Zobaczmy efekt:

======================== RESTART: F:\python38\wpis 9.py ========================
['na początku bóg', 'początku bóg stworzył', 'bóg stworzył niebo', 'stworzył niebo i', 'niebo i ziemię', 'i ziemię ziemia', 'ziemię ziemia zaś', 'ziemia zaś była', 'zaś była bezładem', 'była bezładem i', 'bezładem i pustkowiem', 'i pustkowiem ciemność', 'pustkowiem ciemność była', 'ciemność była nad', 'była nad powierzchnią', 'nad powierzchnią bezmiaru', 'powierzchnią bezmiaru wód', 'bezmiaru wód a', 'wód a duch', 'a duch boży', 'duch boży unosił', 'boży unosił się', 'unosił się nad', 'się nad wodami', 'nad wodami wtedy', 'wodami wtedy bóg', 'wtedy bóg rzekł', 'bóg rzekł niechaj', 'rzekł niechaj się', 'niechaj się stanie', 'się stanie światłość', 'stanie światłość i', 'światłość i stała', 'i stała się', 'stała się światłość', 'się światłość bóg', 'światłość bóg widząc', 'bóg widząc że', 'widząc że światłość', 'że światłość jest', 'światłość jest dobra', 'jest dobra oddzielił', 'dobra oddzielił ją', 'oddzielił ją od', 'ją od ciemności', 'od ciemności i', 'ciemności i nazwał', 'i nazwał bóg', 'nazwał bóg światłość', 'bóg światłość dniem']
>>> 

Świetnie! Tak uporządkowaną listę trójwyrazowych stringów w końcu możemy policzyć. Do dzieła!

import re
from collections import Counter

tekst = """
1 Na początku Bóg stworzył niebo i ziemię. 2 Ziemia zaś była bezładem i pustkowiem: ciemność była nad powierzchnią bezmiaru wód, a Duch2 Boży unosił się nad wodami.
3 Wtedy Bóg rzekł: «Niechaj się stanie światłość!» I stała się światłość. 4 Bóg widząc, że światłość jest dobra, oddzielił ją od ciemności. 5 I nazwał Bóg światłość dniem, a ciemność nazwał nocą.
I tak upłynął wieczór i poranek - dzień pierwszy.
6 A potem Bóg rzekł: «Niechaj powstanie sklepienie w środku wód i niechaj ono oddzieli jedne wody od drugich!» 7 Uczyniwszy to sklepienie, Bóg oddzielił wody pod sklepieniem od wód ponad sklepieniem; a gdy tak się stało, 8 Bóg nazwał to sklepienie niebem.
I tak upłynął wieczór i poranek - dzień drugi.
9 A potem Bóg rzekł: «Niechaj zbiorą się wody spod nieba w jedno miejsce i niech się ukaże powierzchnia sucha!» A gdy tak się stało, 10 Bóg nazwał tę suchą powierzchnię ziemią, a zbiorowisko wód nazwał morzem. Bóg widząc, że były dobre, 11 rzekł: «Niechaj ziemia wyda rośliny zielone: trawy dające nasiona, drzewa owocowe rodzące na ziemi według swego gatunku owoce, w których są nasiona». I stało się tak. 12 Ziemia wydała rośliny zielone: trawę dającą nasienie według swego gatunku i drzewa rodzące owoce, w których było nasienie według ich gatunków. A Bóg widział, że były dobre.
13 I tak upłynął wieczór i poranek - dzień trzeci.
14 A potem Bóg rzekł: «Niechaj powstaną ciała niebieskie, świecące na sklepieniu nieba, aby oddzielały dzień od nocy, aby wyznaczały pory roku, dni i lata; 15 aby były ciałami jaśniejącymi na sklepieniu nieba i aby świeciły nad ziemią». I stało się tak. 16 Bóg uczynił dwa duże ciała jaśniejące: większe, aby rządziło dniem, i mniejsze, aby rządziło nocą, oraz gwiazdy. 17 I umieścił je Bóg na sklepieniu nieba, aby świeciły nad ziemią; 18 aby rządziły dniem i nocą i oddzielały światłość od ciemności. A widział Bóg, że były dobre.
19 I tak upłynął wieczór i poranek - dzień czwarty.
20 Potem Bóg rzekł: «Niechaj się zaroją wody od roju istot żywych, a ptactwo niechaj lata nad ziemią, pod sklepieniem nieba!» 21 Tak stworzył Bóg wielkie potwory morskie i wszelkiego rodzaju pływające istoty żywe, którymi zaroiły się wody, oraz wszelkie ptactwo skrzydlate różnego rodzaju. Bóg widząc, że były dobre, 22 pobłogosławił je tymi słowami: «Bądźcie płodne i mnóżcie się, abyście zapełniały wody morskie, a ptactwo niechaj się rozmnaża na ziemi».
23 I tak upłynął wieczór i poranek - dzień piąty.
24 Potem Bóg rzekł: «Niechaj ziemia wyda istoty żywe różnego rodzaju: bydło, zwierzęta pełzające i dzikie zwierzęta według ich rodzajów!» I stało się tak. 25 Bóg uczynił różne rodzaje dzikich zwierząt, bydła i wszelkich zwierząt pełzających po ziemi. I widział Bóg, że były dobre. 26 3A wreszcie rzekł Bóg: «Uczyńmy człowieka na Nasz obraz, podobnego Nam. Niech panuje nad rybami morskimi, nad ptactwem powietrznym, nad bydłem, nad ziemią i nad wszystkimi zwierzętami pełzającymi po ziemi!»
27 Stworzył więc Bóg człowieka na swój obraz,
na obraz Boży go stworzył:
stworzył mężczyznę i niewiastę.
28 Po czym Bóg im błogosławił, mówiąc do nich: «Bądźcie płodni i rozmnażajcie się, abyście zaludnili ziemię i uczynili ją sobie poddaną; abyście panowali nad rybami morskimi, nad ptactwem powietrznym i nad wszystkimi zwierzętami pełzającymi po ziemi». 29 I rzekł Bóg: «Oto wam daję wszelką roślinę przynoszącą ziarno po całej ziemi i wszelkie drzewo, którego owoc ma w sobie nasienie: dla was będą one pokarmem. 30 A dla wszelkiego zwierzęcia polnego i dla wszelkiego ptactwa w powietrzu, i dla wszystkiego, co się porusza po ziemi i ma w sobie pierwiastek życia, będzie pokarmem wszelka trawa zielona». I stało się tak. 31 A Bóg widział, że wszystko, co uczynił, było bardzo dobre.
I tak upłynął wieczór i poranek - dzień szósty.
"""

tekst = tekst.lower()
tekst = re.sub("[^a-z ąćęłńóśóżź]", "", tekst)
tekst = re.sub(" +", " ", tekst)
wyrazy = tekst.split()
lista_trzech_wyrazow = []

for indeks in range(len(wyrazy) - 2):
    trzy_wyrazy = " ".join(wyrazy[indeks:indeks + 3])
    lista_trzech_wyrazow.append(trzy_wyrazy)

liczba_trzygramow = Counter(lista_trzech_wyrazow)

print(liczba_trzygramow)

W 2 linijce importujesz potrzebną funkcję Counter z biblioteki collections. W 34 linijce pod zmienną liczba_trzygramow podstawiasz wynik działania funkcji Counter(). W 36 linijce drukujesz otrzymany słownik, przechowywany pod zmienną liczba_trzygramow. Zobaczmy efekt. Pokażę tylko kilka pierwszych linijek:

======================== RESTART: F:\python38\wpis 9.py ========================
Counter({'bóg rzekł niechaj': 6, 'tak upłynął wieczór': 6, 'upłynął wieczór i': 6, 'wieczór i poranek': 6, 'i poranek dzień': 6, 'potem bóg rzekł': 5, 'że były dobre': 5,

Fantastycznie! Teraz widzisz jakie trójwyrazowe wyrażenia pojawiają się najczęściej w pierwszym rozdziale Księgi Rodzaju. W następnej części kursu przymierzymy się do przygotowania długiego tekstu dla naszego programu.

Zadanie domowe

Podążanie za instrukcjami, nawet jeśli je wszystkie wykonujesz samodzielnie, nie zrobi z ciebie programisty. Zadania domowe mogą wydawać się na początku trudne. Tu nie ma rozwiązania podanego na talerzu, użyj dowolnych źródeł, by znaleźć odpowiedź.

  1. Poznałeś metodę .lower(), jaka metoda pozwoli ci na zamianę wszystkich liter stringu na wielkie? Sprawdź jej działanie.
  2. W podanym stringu „90457 203658 1245 245 320976” wydrukuj wszystkie sześciocyfrowe liczby. Użyj biblioteki re i metody .findall()

0 0 votes
Ocena artykułu

0 komentarzy
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
0
Chcesz podzielić się komentarzem?x