Podczas dzielenia łańcucha rozdzielonego przecinkami na listę w Pythonie, jeśli nie ma spacji pomiędzy nimi, zadziała po prostu split(). Jeśli są spacje, warto połączyć to z funkcją strip(), aby usunąć dodatkowe spacje. Dodatkowo, używanie notacji list comprehension jest sprytnym sposobem pisania.
W tym rozdziale najpierw wyjaśniamy, co następuje.
- Podziel łańcuch z podanym ogranicznikiem i zwróć go jako listę
split()
- Usuwa dodatkowe znaki z początku i końca łańcucha.
strip()
- Notacja list comprehension do stosowania funkcji i metod do elementów listy.
Pokazuje również jak utworzyć listę łańcuchów oddzielonych spacjami i przecinkami poprzez usunięcie spacji, jak pokazano poniżej.'one, two, three'
Ponadto omówimy następujące zagadnienia
- Jak uzyskać go w postaci listy liczb
- Jak użyć join() aby połączyć listę i zrobić z niej ponownie ciąg znaków
split(): Podziel łańcuch z podanym ogranicznikiem i zwróć go jako listę
Używając metody split() dla łańcuchów, możesz podzielić łańcuch za pomocą określonego ogranicznika i otrzymać go jako listę (tablicę). Określony separator może być określony przez następujący argument.sep
Jeśli pominięto argument sep i nie podano ogranicznika, to dzieli ona łańcuch na spacje i zwraca listę. Kolejne spacje i tabulatory również podzielą listę, więc jeśli chcesz utworzyć listę łańcuchów z ograniczeniem tabulacji, możesz użyć split() bez argumentu.
s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one\ttwo\tthree' l = s.split() print(l) # ['one', 'two', 'three']
Jeśli w argumencie sep podano separator, to dzieli on listę przez ten łańcuch i zwraca listę.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
W przypadku łańcucha rozdzielonego przecinkami, jeśli nie ma dodatkowej białej spacji, nie ma problemu, ale jeśli uruchomisz split() z przecinkiem jako ogranicznikiem dla łańcucha rozdzielonego przecinkiem + białą spacją, skończysz z listą łańcuchów z białą spacją pozostawioną na początku.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Możesz użyć przecinka + spacji jako ogranicznika w następujący sposób, ale to nie zadziała, jeśli liczba spacji w oryginalnym łańcuchu jest inna.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
Metoda string strip(), która zostanie wyjaśniona za chwilę, może być użyta do radzenia sobie z dwoma spacjami.
strip(): Usuwa dodatkowe znaki z początku i końca łańcucha.
strip() jest metodą służącą do usuwania dodatkowych znaków z początku i końca łańcucha znaków.
Jeśli argument jest pominięty, zwracany jest nowy łańcuch z usuniętymi znakami białych spacji. Sam oryginalny łańcuch nie jest zmieniany.
s = ' one ' print(s.strip()) # one print(s) # one
Jeżeli jako argument podano łańcuch, to znaki zawarte w tym łańcuchu zostaną usunięte.
s = '-+-one-+-' print(s.strip('-+')) # one
W tym przypadku, spacje nie są usuwane. Dlatego, jeśli chcesz usunąć również białe znaki, jako argument podaj łańcuch zawierający spacje, jak pokazano poniżej.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
strip() obsługuje oba końce, ale dostępne są również następujące funkcje.
lstrip()
:Proces to dopiero początekrstrip()
:Przetwarzaj tylko koniec linii.
Notacja rozumienia listy: zastosowanie funkcji i metod do elementów listy.
Jeśli chcesz zastosować funkcję lub metodę do elementów listy, mądrze jest użyć notacji list comprehension zamiast pętli for, jeśli chcesz otrzymać listę na końcu.
- Powiązane artykuły:Używanie notacji listy Pythona
Tutaj, zastosujemy strip() do listy otrzymanej przez podzielenie łańcucha znaków za pomocą split(). Dodatkowe białe znaki w oddzielonym przecinkami łańcuchu zawierającym białe znaki mogą zostać usunięte, aby utworzyć listę.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Kiedy jest to zastosowane do pustego łańcucha, można uzyskać listę z pojedynczym pustym łańcuchem jako elementem.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Jeśli chcesz uzyskać pustą listę dla pustego łańcucha, możesz skonfigurować gałąź warunkową w notacji list comprehension.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Ponadto, jeśli brakuje elementu rozdzielonego przecinkami, jak opisano powyżej, pierwsza metoda wyświetli go jako pusty element łańcuchowy.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Jeśli chcesz zignorować brakujące części, możesz skonfigurować gałąź warunkową w notacji list comprehension.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Otrzymać jako listę liczb
Jeśli chcesz otrzymać oddzielony przecinkami ciąg liczb jako listę liczb zamiast łańcucha, zastosuj int() lub float() aby przekonwertować ciąg na liczbę w notacji listowej.
s = '1, 2, 3, 4' l = [x.strip() for x in s.split(',')] print(l) print(type(l[0])) # ['1', '2', '3', '4'] # <class 'str'> s = '1, 2, 3, 4' l = [int(x.strip()) for x in s.split(',')] print(l) print(type(l[0])) # [1, 2, 3, 4] # <class 'int'>
join(): Połącz listę i otrzymaj ją jako ciąg znaków
W odwrotnym schemacie, jeśli chcesz dołączyć do listy i uzyskać ciągi oddzielone określonym ogranicznikiem, użyj metody join().
Łatwo jest popełnić błąd, ale zauważ, że join() jest metodą łańcuchową, a nie listową. Lista jest określona jako argument.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three'] print(','.join(l)) # one,two,three print('::'.join(l)) # one::two::three
Możesz to zapisać w jednej linii w następujący sposób.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Jeśli chcesz tylko zmienić stały delimiter, łatwiej jest zastąpić go metodą replace().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three