Odpowiedzi:
"2.7.0_bf4fda703454".split("_")
podaje listę ciągów:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
To rozdziela strunę na każdym podkreśleniu. Jeśli chcesz, aby zatrzymał się po pierwszym podziale, użyj "2.7.0_bf4fda703454".split("_", 1)
.
Jeśli wiesz na pewno, że ciąg zawiera podkreślenie, możesz nawet rozpakować LHS i RHS na osobne zmienne:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Alternatywą jest użycie partition()
. Użycie jest podobne do ostatniego przykładu, z tą różnicą, że zwraca trzy składniki zamiast dwóch. Główną zaletą jest to, że ta metoda nie zawiedzie, jeśli ciąg nie zawiera separatora.
Podziel ciąg w przestrzeni, pobierz listę, pokaż jej typ, wydrukuj:
el@apollo:~/foo$ python
>>> mystring = "What does the fox say?"
>>> mylist = mystring.split(" ")
>>> print type(mylist)
<type 'list'>
>>> print mylist
['What', 'does', 'the', 'fox', 'say?']
Jeśli obok siebie znajdują się dwa ograniczniki, zakłada się pusty ciąg:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Podziel ciąg na podkreśleniu i weź piątą pozycję na liście:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Zwiń wiele spacji w jedną
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Gdy nie przekażesz żadnego parametru do metody split w Pythonie, w dokumentacji stwierdza się : „ciągi kolejnych białych znaków są traktowane jako pojedynczy separator, a wynik nie będzie zawierał pustych ciągów na początku lub na końcu, jeśli łańcuch ma początkowe lub końcowe białe znaki”.
Trzymajcie się czapek chłopcy, przeanalizujcie wyrażenie regularne:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Wyrażenie regularne „[am] +” oznacza, że małe litery a
do m
występujących raz lub więcej razy są dopasowywane jako separator. re
to biblioteka do zaimportowania.
Lub jeśli chcesz zgniatać elementy pojedynczo:
el@apollo:~/foo$ python
>>> mystring = "theres coffee in that nebula"
>>> mytuple = mystring.partition(" ")
>>> print type(mytuple)
<type 'tuple'>
>>> print mytuple
('theres', ' ', 'coffee in that nebula')
>>> print mytuple[0]
theres
>>> print mytuple[2]
coffee in that nebula
Jeśli zawsze będzie to równy podział LHS / RHS, możesz również użyć partition
metody wbudowanej w łańcuchy. Zwraca 3-krotkę tak, (LHS, separator, RHS)
jakby separator został znaleziony i (original_string, '', '')
jeśli separator nie był obecny:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')
partition
metody łańcuchów, a następnie zaktualizuj swoje pytanie.