2011-05-03 19 views
9

Estoy buscando un camino en python para lograr una funcionalidad similar a la utilidad unix cut. Sé que puedo hacer una llamada al sistema y procesar mis datos de esa manera, pero me gustaría hacerlo un poco más "pitónico" y hacerlo con las bibliotecas de Python.Python Cut Ejemplo

Ejemplo de texto

abcde:12345 

me gustaría para delimitar el : y mantener el segundo campo:

cut -d':' -f2 

para producir:

12345 

pensamientos?

+1

¿Qué tal algo como 'echo 'abc: 123: def: 456' | cut -d ':' -f1,3'? ¿Es posible obtener los campos 1 y 3 dentro de un único método 'split()', es decir, cómo combinar los índices [1] y [3]? –

Respuesta

12

que puede hacer:

string.split(":")[1] 

donde cadena es el texto

4

Prueba esto:

'abcde:12345'.split(':')[1] 
+0

He editado tu error :) – Trufa

+0

@Trufa: Gracias. –

2

Claro:

for line in open('data.txt'): 
    second_field = line.rstrip('\n').split(':')[1] 

Usted puede hacer que sea más configurable y incluso escribe el tuyo con optpar se o argparse ... háganos saber más sobre lo que está tratando de hacer.

+0

Ese código incluirá una nueva línea si solo hay 2 campos; lo mejor es hacer 'line.rstrip ('\ n')' es decir, rstrip * before * split. –

+0

@John, gracias, y en el caso de que tenga un tipo diferente de nueva línea, no he especificado \ n – Henry

+0

No puede tener una nueva forma de línea nueva en modo texto. Ha eliminado todo/cualquier espacio en blanco al final, que es excesivo. Si eso se quiere, debe hacerse en cada campo de interés. –

Cuestiones relacionadas