Respuestas:
"2.7.0_bf4fda703454".split("_")
da una lista de cadenas:
In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Esto divide la cadena en cada guión bajo. Si desea que se detenga después de la primera división, use"2.7.0_bf4fda703454".split("_", 1)
.
Si sabe a ciencia cierta que la cadena contiene un guión bajo, puede incluso descomprimir el LHS y el RHS en variables separadas:
In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)
In [9]: lhs
Out[9]: '2.7.0'
In [10]: rhs
Out[10]: 'bf4fda703454'
Una alternativa es usar partition()
. El uso es similar al último ejemplo, excepto que devuelve tres componentes en lugar de dos. La principal ventaja es que este método no falla si la cadena no contiene el separador.
Divida una cadena en el espacio, obtenga una lista, muestre su tipo, imprímalo:
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?']
Si tiene dos delimitadores uno al lado del otro, se asume una cadena vacía:
el@apollo:~/foo$ python
>>> mystring = "its so fluffy im gonna DIE!!!"
>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Divida una cadena en el guión bajo y tome el quinto elemento de la lista:
el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."
>>> mystring.split("_")[4]
"Kowalski's"
Contraer varios espacios en uno
el@apollo:~/foo$ python
>>> mystring = 'collapse these spaces'
>>> mycollapsedstring = ' '.join(mystring.split())
>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Cuando no pasa ningún parámetro al método de división de Python, la documentación dice : "las ejecuciones de espacios en blanco consecutivos se consideran un solo separador, y el resultado no contendrá cadenas vacías al principio o al final si la cadena tiene espacios en blanco al principio o al final".
Sostén tus sombreros, chicos, analiza una expresión regular:
el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
La expresión regular "[am] +" significa que las letras minúsculas a
hasta m
que aparecen una o más veces se hacen coincidir como delimitadores. re
es una biblioteca para ser importada.
O si desea masticar los artículos uno a la vez:
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
Si siempre va a ser una división uniforme LHS / RHS, también puede usar el partition
método que está integrado en las cadenas. Devuelve una tupla de 3 como (LHS, separator, RHS)
si se encontrara (original_string, '', '')
el separador y si el separador no estuviera presente:
>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')
>>> "shazam".partition("_")
('shazam', '', '')
partition
método de cadenas y luego actualice su pregunta.