into - Python: dividido por 1 o más apariciones de un delimitador
split python 3 (5)
¿Simplemente no das ningún delímetro?
>>> a="test result"
>>> a.split()
[''test'', ''result'']
Tengo una cadena formateada de un archivo de registro, que se ve así:
>>> a="test result"
Es decir, la prueba y el resultado están divididos por algunos espacios; probablemente se creó usando una cadena formateada que dio un espaciado constante a la test
.
La división simple no hará el truco:
>>> a.split(" ")
[''test'', '''', '''', '''', ... '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', '''', ''result'']
split(DELIMITER, COUNT)
borró algunos valores innecesarios:
>>> a.split(" ",1)
[''test'', '' result'']
Esto ayudó, pero por supuesto, realmente necesito:
[''test'', ''result'']
Puedo usar split()
seguido de map
+ strip()
, pero me pregunto si hay una forma más pitonica de hacerlo.
Gracias,
Adán
ACTUALIZACIÓN: ¡ Una solución tan simple! Gracias a todos.
Cualquier problema con simple a.split()
?
Solo esto debería funcionar:
a.split()
Ejemplo:
>>> ''a b''.split('' '')
[''a'', '''', '''', '''', '''', '''', ''b'']
>>> ''a b''.split()
[''a'', ''b'']
De la documentación :
Si no se especifica sep o None, se aplicará un algoritmo de división diferente: las ejecuciones de espacios en blanco consecutivos se consideran como un único separador, y el resultado no contendrá cadenas vacías al inicio o al final si la cadena tiene espacios en blanco iniciales o finales. En consecuencia, dividir una cadena vacía o una cadena que consta de solo espacios en blanco con un separador Ninguno devuelve [].
>>> import re
>>> a="test result"
>>> re.split(" +",a)
[''test'', ''result'']
>>> a.split()
[''test'', ''result'']
Solo agregue una forma más, más útil en los casos en que el delimitador es diferente del espacio, y s.split () no funcionará.
como str = "Python, es ,, más ,,,,, flexible".
In [27]: s = "Python is more flexible"
In [28]: str_list = list(filter(lambda x: len(x) > 0, s.split(" ")))
In [29]: str_list
Out[29]: [''Python'', ''is'', ''more'', ''flexible'']