¿Cómo puedo dividir y analizar una cadena en Python? [duplicar]

Resuelto kamal asked hace 13 años • 3 respuestas

Estoy intentando dividir esta cadena en Python:2.7.0_bf4fda703454

Quiero dividir esa cadena en el guión bajo _para poder usar el valor en el lado izquierdo.

kamal avatar Apr 22 '11 03:04 kamal
Aceptado

"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, utilice "2.7.0_bf4fda703454".split("_", 1).

Si sabe con certeza que la cadena contiene un guión bajo, incluso puede descomprimir LHS y 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 utilizar 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.

NPE avatar Apr 21 '2011 20:04 NPE

Tutorial de análisis de cadenas de Python

Divida una cadena en el espacio, obtenga una lista, muestre su tipo, imprímala:

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 supone 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 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 indica : "las ejecuciones de espacios en blanco consecutivos se consideran un separador único 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".

Sujétense los sombreros, muchachos, analicen 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 aque maparecen una o más veces coinciden como delimitador. rees una biblioteca para importar.

O si quieres masticar los elementos 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
Eric Leschinski avatar Jan 08 '2014 00:01 Eric Leschinski

Si siempre va a ser una división uniforme LHS/RHS, también puedes usar el partitionmétodo integrado en las cadenas. Devuelve una tupla de 3 como (LHS, separator, RHS)si se encontrara el separador y (original_string, '', '')si el separador no estuviera presente:

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

>>> "shazam".partition("_")
('shazam', '', '')
bgporter avatar Apr 21 '2011 20:04 bgporter