2010-11-30 35 views
30

Necesito una función similar a string.split ('') pero puede haber más de un espacio, y un número diferente de ellos entre los caracteres significativos. Algo así:Dividir una cadena con un número desconocido de espacios como separador en Python

s = ' 1234 Q-24 2010-11-29   563 abc a6G47er15    ' 
ss = s.magicSplit() 
print ss 
['1234','Q-24','2010-11-29','563','abc','a6G47er15'] 

¿hay algún modo utilizar expresiones regulares para atrapar a los espacios en el medio?

¿Podría alguien ayudar, por favor?

Respuesta

61

Trate

>>> ' 1234 Q-24 2010-11-29   563 abc a6G47er15'.split() 
['1234', 'Q-24', '2010-11-29', '563', 'abc', 'a6G47er15'] 

o si desea

>>> class MagicString(str): 
...  magicSplit = str.split 
... 
>>> s = MagicString(' 1234 Q-24 2010-11-29   563 abc a6G47er15') 
>>> s.magicSplit() 
['1234', 'Q-24', '2010-11-29', '563', 'abc', 'a6G47er15'] 
+11

Maldición! ¿Por qué no intenté split() sin ningún argumento? :) ¡Gracias! – user63503

+1

Tenga en cuenta que sin argumentos, split() se divide en "cualquier espacio en blanco", por lo que las pestañas (por ejemplo) también se tratarán como separadores (y se absorberán en secuencias de espacio de pestañas como un único separador). –

+2

Si eso es realmente un problema (casi nunca lo es), entonces '[subs para subs en s.split ('') si s]' – aaronasterling

14
s = ' 1234 Q-24 2010-11-29   563 abc a6G47er15    ' 
ss = s.split() 
print ss 
['1234','Q-24','2010-11-29','563','abc','a6G47er15'] 
Cuestiones relacionadas