Pyton

Jak dzielić ciągi w Pythonie

Jak dzielić ciągi w Pythonie
W tym artykule wyjaśnimy, jak dzielić ciągi w Pythonie za pomocą metod „split()” i „partition()”. Te metody są szczególnie przydatne, jeśli chcesz przekonwertować zdanie lub grupę słów na przetworzone i iterowalne typy Pythona. Wszystkie próbki kodu w tym przewodniku zostały przetestowane w języku Python w wersji 3.8.6.

Metoda podziału

Metoda „split()” może być użyta do dzielenia słów przy użyciu separatora określonego przez użytkownika. Zwraca listę podzielonych słów bez separatora. Jeśli użytkownik nie określi separatora, jako pojedynczy separator używany jest biały znak (jeden lub więcej).

Na przykład poniższy kod zwróci „['Linux', 'Hint']” jako dane wyjściowe:

text = "Podpowiedź Linuksa"
tekst.rozdzielać()

Poniższy kod zwróci „['LinuxHint', 'com']” jako dane wyjściowe, gdy „.” jest używany jako separator:

tekst = "Podpowiedź Linuksa.com"
tekst.rozdzielać(".”)

Separator nie musi być pojedynczym znakiem. Metoda split przyjmuje dwa argumenty:

Oba te argumenty są opcjonalne. Jak wspomniano powyżej, jeśli nie podano argumentu „sep”, jako separatora do dzielenia używane są białe znaki. Argument „maxsplit” ma domyślną wartość „-1” i domyślnie dzieli wszystkie wystąpienia. Rozważ poniższy kod:

tekst = "Podpowiedź Linuksa.współ.nas"
tekst.rozdzielać(".”)

Zwróci „['LinuxHint', 'co', 'us']” jako dane wyjściowe. Jeśli chcesz zatrzymać dzielenie przy pierwszym wystąpieniu separatora, podaj „1” jako argument „maxsplit”.

tekst = "Podpowiedź Linuksa.współ.nas"
tekst.rozdzielać(".”, 1)

Powyższy kod zwróci „['LinuxHint', 'co.nas']” jako wyjście. Po prostu określ liczbę wystąpień, w których chcesz, aby proces podziału został zatrzymany jako drugi argument.

Zwróć uwagę, że jeśli istnieją kolejne separatory, zostanie zwrócony pusty ciąg dla pozostałych separatorów po pierwszym podziale (gdy argument „maxsplit” nie jest używany):

text = "LinuxHint… com"
tekst.rozdzielać(".")

Powyższy kod zwróci „['LinuxHint', ”, 'com']” jako dane wyjściowe. W przypadku, gdy chcesz usunąć puste ciągi z listy wynikowej, możesz użyć następującej instrukcji list składanej:

text = "LinuxHint… com"
wynik = tekst.rozdzielać(".")
wynik = [pozycja dla pozycji w wyniku, jeśli pozycja != ""]
drukuj (wynik)

Otrzymasz „['LinuxHint', 'com']” jako wynik po uruchomieniu powyższego przykładowego kodu.

Zauważ, że metoda „split()” przesuwa się od lewej do prawej, aby podzielić ciągi na słowa. Jeśli chcesz podzielić ciąg z prawej na lewą stronę, użyj zamiast tego „rsplit()”. Jego składnia, użycie i argumenty są dokładnie takie same jak w przypadku metody „split()”.

Jeśli nie znaleziono separatora w ciągu podczas używania metod „split()” lub „rsplit()”, oryginalny ciąg jest zwracany jako jedyny element listy.

Metoda partycji

Metoda „partition()” może służyć do dzielenia ciągów i działa identycznie jak metoda „split()” z pewnymi różnicami. Najbardziej zauważalną różnicą jest to, że zachowuje separator i umieszcza go jako element w wynikowej krotce zawierającej podzielone słowa. Jest to szczególnie przydatne, jeśli chcesz podzielić ciąg na iterowalny obiekt (w tym przypadku krotkę) bez usuwania oryginalnych znaków. Rozważ poniższy kod:

tekst = "Podpowiedź Linuksa.com"
wynik = tekst.przegroda(".")
drukuj (wynik)

Powyższy przykładowy kod zwróci „('LinuxHint', '.', 'com')” jako wyjście. Jeśli chcesz, aby wynik był typu listy, użyj zamiast tego następującego przykładu kodu:

tekst = "Podpowiedź Linuksa.com"
wynik = lista(tekst.przegroda("."))
drukuj (wynik)

Powinieneś otrzymać „['LinuxHint', '.', 'com']” jako dane wyjściowe po uruchomieniu powyższego przykładu kodu.

Metoda „partition()” przyjmuje tylko jeden argument o nazwie „sep”. Użytkownicy mogą określić separator o dowolnej długości. W przeciwieństwie do metody „split()” ten argument jest obowiązkowy, więc nie można pominąć separatora. Możesz jednak określić odstęp jako separator.

Zauważ, że metoda partycji zatrzymuje się przy pierwszym wystąpieniu separatora. Jeśli więc Twój ciąg zawiera wiele separatorów, metoda „partition()” zignoruje wszystkie inne wystąpienia. Oto przykład ilustrujący to:

tekst = "Podpowiedź Linuksa.współ.nas"
wynik = lista(tekst.przegroda("."))
drukuj (wynik)

Przykładowy kod wygeneruje „['LinuxHint', '.', 'co.nas']” jako wyjście. Jeśli chcesz podzielić na wszystkie wystąpienia separatora i uwzględnić go również na końcowej liście, być może będziesz musiał użyć wzorca „Wyrażenie regularne” lub „Wyrażenie regularne”. W powyższym przykładzie możesz użyć wzorca RegEx w następujący sposób:

importuj ponownie
tekst = "Podpowiedź Linuksa.współ.nas"
wynik = re.rozdzielać("(\.)", tekst)
drukuj (wynik)

Otrzymasz „['LinuxHint','.', 'co', '.', 'us']” jako dane wyjściowe po wykonaniu powyższego przykładowego kodu. Znak kropki został zmieniony we wspomnianej powyżej instrukcji RegEx. Zauważ, że chociaż powyższy przykład działa z pojedynczą kropką, może nie działać ze złożonymi separatorami i złożonymi ciągami. Być może będziesz musiał zdefiniować własny wzór RegEx w zależności od przypadku użycia. Przykład jest tutaj wspomniany, aby dać ci pewne wyobrażenie o procesie zachowywania separatora na końcowej liście za pomocą instrukcji RegEx.

Metoda „partition()” może czasami pozostawić puste ciągi, zwłaszcza gdy w ciągu, który ma zostać podzielony, nie ma separatora. W takich przypadkach możesz użyć instrukcji list składanych, aby usunąć puste ciągi, jak wyjaśniono w sekcji metody „split()” powyżej.

tekst = "Podpowiedź Linuksa"
wynik = lista(tekst.przegroda("."))
wynik = [pozycja dla pozycji w wyniku, jeśli pozycja != ""]
drukuj (wynik)

Po uruchomieniu powyższego kodu powinieneś otrzymać „['LinuxHint']” jako wyjście.

Wniosek

W przypadku prostych i nieskomplikowanych podziałów można użyć metod „split()” i „partition()”, aby uzyskać typy iterowalne. W przypadku złożonych ciągów i separatorów będziesz musiał użyć instrukcji RegEx.

Gry Battle for Wesnoth Tutorial
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
Gry 0 A.D. Tutorial
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Gry Unity3D Tutorial
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...