Risposte:
"2.7.0_bf4fda703454".split("_")
fornisce un elenco di stringhe:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Questo divide la stringa ad ogni trattino basso. Se vuoi che si fermi dopo la prima divisione, usa "2.7.0_bf4fda703454".split("_", 1)
.
Se sai per certo che la stringa contiene un trattino basso, puoi persino decomprimere LHS e RHS in variabili separate:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Un'alternativa è usare partition()
. L'utilizzo è simile all'ultimo esempio, tranne per il fatto che restituisce tre componenti invece di due. Il vantaggio principale è che questo metodo non fallisce se la stringa non contiene il separatore.
Dividi una stringa nello spazio, ottieni un elenco, mostra il suo tipo, stampalo:
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?']
Se hai due delimitatori uno accanto all'altro, si presuppone una stringa vuota:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Dividi una stringa sul carattere di sottolineatura e prendi il 5 ° elemento nell'elenco:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Comprimi più spazi in uno
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Quando non si passa alcun parametro al metodo split di Python, la documentazione afferma : "le sequenze di spazi vuoti consecutivi sono considerate come un singolo separatore e il risultato non conterrà stringhe vuote all'inizio o alla fine se la stringa ha spazi bianchi iniziali o finali".
Tieni i tuoi cappelli ragazzi, analizza un'espressione regolare:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
L'espressione regolare "[am] +" mezzi le lettere minuscole a
attraverso m
che si verificano una o più volte sono abbinate come delimitatore. re
è una libreria da importare.
O se vuoi masticare gli oggetti uno alla volta:
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
Se sarà sempre una divisione LHS / RHS uniforme, puoi anche utilizzare il partition
metodo integrato nelle stringhe. Restituisce una 3-tupla come (LHS, separator, RHS)
se il separatore fosse trovato e (original_string, '', '')
se il separatore non fosse presente:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')
partition
metodo delle stringhe, quindi aggiorna la tua domanda.