Hoe kan ik een string splitsen en ontleden in Python?

Ik probeer deze string in python te splitsen: 2.7.0_bf4fda703454

Ik wil die tekenreeks op het onderstrepingsteken _splitsen zodat ik de waarde aan de linkerkant kan gebruiken.


Antwoord 1, autoriteit 100%

"2.7.0_bf4fda703454".split("_")geeft een lijst met strings:

In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']

Hiermee wordt de tekenreeks gesplitst bij elkonderstrepingsteken. Als je wilt dat het stopt na de eerste splitsing, gebruik dan "2.7.0_bf4fda703454".split("_", 1).

Als je zeker weet dat de tekenreeks een onderstrepingsteken bevat, kun je de LHS en RHS zelfs uitpakken in afzonderlijke variabelen:

In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'

Een alternatief is het gebruik van partition(). Het gebruik is vergelijkbaar met het laatste voorbeeld, behalve dat het drie componenten retourneert in plaats van twee. Het belangrijkste voordeel is dat deze methode niet faalt als de string het scheidingsteken niet bevat.


Antwoord 2, autoriteit 59%

Python string parsing walkthrough

Splits een tekenreeks op spatie, krijg een lijst, toon het type, print het uit:

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?']

Als je twee scheidingstekens naast elkaar hebt, wordt uitgegaan van een lege tekenreeks:

el@apollo:~/foo$ python
>>> mystring = "its  so   fluffy   im gonna    DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']

Spreek een tekenreeks op onderstrepingsteken en pak het 5e item in de lijst:

el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"

Meerdere spaties samenvouwen tot één

el@apollo:~/foo$ python
>>> mystring = 'collapse    these       spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']

Als je geen parameter doorgeeft aan de splitsingsmethode van Python, in de documentatie staat: ” reeksen opeenvolgende witruimten worden beschouwd als een enkel scheidingsteken en het resultaat bevat geen lege tekenreeksen aan het begin of einde als de tekenreeks een voorloop- of volgspatie heeft”.

Houd je hoed vast, jongens, ontleden op een reguliere expressie:

el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']

De reguliere expressie “[a-m]+” betekent dat de kleine letters atot en met mdie een of meer keren voorkomen als scheidingsteken worden gebruikt. reis een bibliotheek die moet worden geïmporteerd.

Of als je de items één voor één wilt eten:

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

Antwoord 3, autoriteit 13%

Als het altijd een gelijkmatige LHS/RHS-splitsing zal zijn, kun je ook de partition-methode gebruiken die in strings is ingebouwd. Het retourneert een 3-tupel als (LHS, separator, RHS)als het separator is gevonden, en (original_string, '', '')als het separator dat niet was aanwezig:

>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')

LEAVE A REPLY

Please enter your comment!
Please enter your name here

one × 2 =

Other episodes