2010-01-19 39 views
13

Todo,dividir una cadena en Python

tengo una cadena en Python dicen a="Show details1\nShow details2\nShow details3\nShow details4\nShow details5\n"

¿Cómo podemos dividir la anterior con el delimitador \n (un salto de línea).

El resultado debe ser lo más ['Show details1', 'Show details2', ..., 'Show details5']

+1

qué quiere que sea [ "espectáculo", "details1 "," mostrar "," detalles2 ", ...] o [" mostrar detalles1 "," mostrar detalles2 ", ...] –

+0

¿Es literalmente '\ n', o es un carácter de nueva línea? – ezod

+0

@ezod: '\ n' es un carácter de nueva línea – SilentGhost

Respuesta

15

Si está preocupado sólo con el salto de línea final, que puede hacer:

a.rstrip().split('\n') 

Sede, str.lstrip() y str.strip() para las variaciones.

Si usted está más preocupado por lo general por saltos de línea superfluos que producen artículos vacíos, que puede hacer:

filter(None, a.split('\n')) 
+0

Gracias, esto es lo que estaba buscando ........................... – Hulk

+0

Gracias @ddaa. Ayudó mucho –

0

intento:

a.split('\n') 
+0

Esto no funciona. obtengo el resultado como ['Mostrar detalles', 'Mostrar detalles', ''] 1 elemento más – Hulk

+0

¿Ignorar el último elemento? Su cadena de entrada tiene una cadena vacía después de la última \ n. – Ken

20

Uso a.splitlines(). Esto le devolverá una lista de las líneas separadas. Para obtener el resultado "debería ser", agregue " ".join(a.splitlines()), y para obtener todo en minúsculas como se muestra, toda la enchilada se ve como " ".join(a.splitlines()).lower().

+0

por curiosidad, ¿qué tan malo es este rendimiento? –

+0

Paul, integé la información del comentario del OP con otra respuesta. Él no parece querer la parte "unirse" de esto ... –

+0

@Idan, es mucho más rápido. En mi máquina, divide la cadena de 10 MB 'prueba esto \ n' * int (1e6) 'en 280ms o 28ns por char. ¿Tiene un problema de rendimiento que involucre esta función? –

1
a.split('\n') 

volvería una entrada vacía como el último miembro de la list.so utilizar

a.split('\n')[:-1]

Cuestiones relacionadas