W tym samouczku dowiesz się, jak używać metody split() Pythona do dzielenia łańcucha na listę łańcuchów.
Podczas pracy z ciągami w Pythonie możesz użyć kilku wbudowanych metod ciągów, aby uzyskać zmodyfikowane kopie ciągów, takie jak konwersja na wielkie litery, sortowanie ciągu i inne. Jedną z takich metod jest .split(), która dzieli ciąg Pythona na listę ciągów, o czym dowiemy się więcej na przykładach kodu.
Pod koniec samouczka nauczysz się następujących rzeczy:
- jak działa metoda .split()
- jak dostosować podział za pomocą parametrów sep i maxsplit
Zaczynajmy!
Spis treści:
Składnia metody split() w Pythonie
Oto ogólna składnia użycia metody split() Pythona na dowolnym prawidłowym ciągu znaków:
string.split(sep, maxsplit) # Parameters: sep, maxsplit # Returns: A list of strings
Tutaj ciąg może być dowolnym prawidłowym ciągiem Pythona.
Oba parametry sep i maxsplit są opcjonalne.
- sep oznacza separator, na którym chcesz podzielić ciąg. Powinien być określony jako ciąg.
- maxsplit to liczba całkowita określająca, ile razy chcesz podzielić łańcuch.
Ich wartości domyślne są używane, gdy nie podasz parametrów opcjonalnych.
- Jeśli nie podasz jawnie wartości sep, jako domyślny separator zostanie użyty biały znak.
- Jeśli nie określisz wartości dla maxsplit, domyślnie jest to -1, co oznacza, że ciąg zostanie podzielony na wszystkie wystąpienia separatora.
Sformułowanie składni prostym językiem:
Metoda split() dzieli ciąg znaków maxsplit liczbę razy po wystąpieniu separatora określonego przez parametr sep.
Teraz, gdy poznaliśmy składnię metody split() Pythona, przystąpmy do kodowania kilku przykładów.
Podziel ciąg Pythona na listę ciągów
Jeśli masz Pyton 3 zainstalowany na komputerze, możesz kodować za pomocą tego samouczka, uruchamiając następujące fragmenty kodu w języku Python REPL.
Aby uruchomić REPL, uruchom jedno z następujących poleceń z terminala:
$ python $ python -i
▶️ Możesz również wypróbować te przykłady w edytorze Python newsblog.pl.
W tym przykładzie py_str jest łańcuchem Pythona. Wywołajmy metodę .split() na py_str bez żadnych parametrów i obserwujmy wynik.
py_str = "Learn how to use split() in Python" py_str.split() # Output ['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']
Jak widać powyżej, ciąg jest dzielony na wszystkie wystąpienia białych znaków.
Podziel ciąg Pythona na występowanie separatorów
#1. Jako pierwszy przykład podzielmy ciąg py_str z podwójnymi podkreśleniami (__) jako separatorem.
py_str = "All__the__best" py_str.split(sep='__') # Output ['All', 'the', 'best']
#2. Weźmy inny przykład. Tutaj py_str ma trzy zdania, każde zakończone kropką (.).
py_str = "I love coding. Python is cool. I'm learning Python in 2022" py_str.split(sep='.') # Output ['I love coding', ' Python is cool', " I'm learning Python in 2022"]
▶️ Kiedy wywołujemy metodę .split() na tym łańcuchu, z ’.’ jako separator, wynikowa lista ma trzy zdania, jak widać w powyższej komórce kodu.
#3. Zadajmy kilka pytań:
- Co się dzieje, gdy separator nigdy nie występuje w ciągu?
- Jak w tym przypadku nastąpi podział?
Oto przykład:
Próbujemy podzielić py_str na wystąpienie gwiazdki
py_str = "This line contains no asterisk." py_str.split(sep='*') # Output ['This line contains no asterisk.']
—co nie występuje.
Ponieważ w tym przypadku nie można dokonać podziału, wynikowa lista zawiera cały łańcuch.
W następnej sekcji zobaczymy, jak możemy użyć metody split() na zawartości pliku tekstowego.
Podziel zawartość pliku Pythona
Podczas pracy z plikami tekstowymi w Pythonie może być konieczne podzielenie zawartości pliku — na podstawie separatora — w celu łatwiejszego przetwarzania.
Oto przykładowy plik tekstowy:
with open('sample.txt') as f: content = f.read() str_list= content.split(sep='...') for string in str_list: print(string,end='')
Poniższy fragment kodu pokazuje, jak używać podziału na zawartość przykładowego pliku tekstowego.
- Powyższy kod wykonuje następujące czynności:
- Używa menedżera kontekstu with do otwierania i pracy z plikiem tekstowym „sample.txt”.
- Odczytuje zawartość pliku za pomocą metody .read() na obiekcie pliku f.
- Dzieli zawartość po wystąpieniu wielokropka separatora (…) na listę str_list.
Wykonuje pętlę przez str_list, aby uzyskać dostęp do każdego ciągu i wypisuje go.
# Output This is a sample text file It contains info on Getting started with <a href="https://newsblog.pl.com/pcap-certification/">programming in Python</a> According to the 2022 StackOverflow Developer Survey Python is one of the most-loved programming languages So what are you waiting for? Start learning!
Oto wynik.
W ramach ćwiczenia możesz spróbować podzielić zawartość pliku tekstowego na dowolny wybrany separator.
Podziel ciąg Pythona na kawałki
Kiedy raz podzielisz strunę, otrzymasz dwa kawałki; dzielenie go dwa razy da trzy.
📋 Ogólnie, kiedy podzielisz strunę K razy, otrzymasz K + 1 kawałki.
Jest to zilustrowane poniżej.
Jak działa parametr maxsplit (zdjęcie autora)
py_str = "Chunk#1 I'm a larger chunk, Chunk#2" py_str.split(maxsplit=1) # Output ['Chunk#1', "I'm a larger chunk, Chunk#2"]
#1. Ustawiliśmy maxsplit na 1. Nie określiliśmy separatora, więc podział będzie domyślnie wykonywany na białych znakach.
Mimo że druga porcja na liście zawiera spacje, podział nie występuje, ponieważ podział jest teraz kontrolowany przez wartość maxsplit równą jeden.
py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces" py_str.split(maxsplit=2) # Output ['Chunk#1', 'Chunk#2', "I'm one large Chunk#3, even though I contain whitespaces"]
#2. Zwiększmy wartość maxsplit do 2 i obserwujmy, jak następuje podział w poniższym przykładzie.
Podobnie jak w poprzednim przykładzie, wartość maxsplit decyduje o liczbie dokonanych podziałów. Otrzymujemy trzy porcje, podziały po pierwszym i drugim wystąpieniu odstępu.
#3. Co się stanie, jeśli ustawisz maxsplit na wartość większą niż liczba wystąpień separatora?
py_str = "There, are, only, 4, commas" py_str.split(maxsplit=8) # Output ['There,', 'are,', 'only,', '4,', 'commas']
W poniższej komórce kodu ustawiamy maxsplit na 8, gdy ciąg zawiera tylko cztery przecinki.
Tutaj metoda split dzieli py_str na wszystkie cztery wystąpienia przecinka. Nawet jeśli spróbujesz ustawić maxsplit na wartość mniejszą niż -1, powiedzmy -7, podział zostanie wykonany na wszystkich wystąpieniach separatora.
Następnie zbierzmy wszystko, czego się nauczyliśmy, i użyjmy obu parametrów sep maxsplit.
Podziel ciąg Pythona na kawałki w separatorze
py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ," py_str.split(sep = ',',maxsplit=2) # Output ['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]
#1. Załóżmy, że musimy podzielić ciąg py_str na trzy części po wystąpieniu przecinka (,). Aby to zrobić, możemy ustawić wartość sep na ’,’ i wartość maxsplit na 2 w wywołaniu metody.
Jak widać na wyjściu, podział występuje dwukrotnie przy pierwszych dwóch wystąpieniach separatora.
#2. Separator sep nie zawsze musi być znakiem specjalnym. Może to być sekwencja znaków specjalnych, takich jak podwójne podkreślenia, których użyliśmy wcześniej, a nawet podciąg.
py_str = "You need to learn data structures, learn algorithms, and learn more!" py_str.split(sep = 'learn',maxsplit=2) # Output ['You need to ', ' data structures, ', ' algorithms, and learn more!']
Ustawmy ciąg 'learn’ jako argument sep i zobaczmy, jak następuje podział dla różnych wartości maxsplit. Tutaj ustawiamy maxsplit na 2.
py_str = "You need to learn data structures, learn algorithms, and learn more!" py_str.split(sep = 'learn',maxsplit=-1) # Output ['You need to ', ' data structures, ', ' algorithms, and ', ' more!']
#3. Jeśli chcesz podzielić py_str na wszystkie wystąpienia ciągu „learn”, możemy wywołać tę metodę .split(), ustawiając sep = „learn” — bez parametru maxsplit. Jest to równoważne jawnemu ustawieniu wartości maxsplit na -1, jak pokazano w komórce kodu poniżej.
Widzimy, że podział występuje we wszystkich przypadkach „uczenia się”.
Zawijanie
Mam nadzieję, że teraz zrozumiałeś, jak używać metody .split() z ciągami Pythona.
- Oto podsumowanie tego samouczka:
- Wbudowana w Pythonie metoda .split() dzieli ciąg na listę ciągów.
- Użyj string.split(), aby podzielić ciąg na wszystkie wystąpienia domyślnego separatora, białych znaków.
Użyj string.split(sep,maxsplit), aby podzielić ciąg maxsplit liczbę razy po wystąpieniu separatora sep. Wynikowa lista zawiera maxsplit+1 elementów.
W następnym kroku możesz dowiedzieć się, jak sprawdzić, czy łańcuchy Pythona są palindromami czy anagramami.