Quiero hacer una lista con los datos de un fichero *.txt
Los únicos datos que me interesan son los dígitos del 2 al 10 de cada linea (los que están en negrita).
Pero la primera linea del fichero no me interesa.
¿Como se salta una linea?...
Tengo entendido que es con "\n"....pero he intentado todas las combinaciones inimaginables y na de na.
Este es el contenido del txt:
(I10,X,A)
81680775 2009242021570722HR4.tif
81680773 2009242021570721HR4.tif
81680771 2009242021570720HR4.tif
81680769 2009242021570719HR4.tif
81680767 2009242021570718HR4.tif
#Creo una lista vacía
lista_iad=[]
#Abro el fichero y añado a la lista_iad
>>> with open("bloc5C.iad",encoding="utf-8") as fichero_iad:
for line in fichero_iad:
lista_iad.append(line[2:10]+".msk")
>>> lista_iad
['10,X,A) .msk', '81680775.msk', '81680773.msk', '81680771.msk', '81680769.msk', '81680767.msk']
Un saludo y gracias por vuestro tiempo.
Bueno lo arreglo con una chapuza:
Borro el primer valor de la lista.
Pero no es muy ortodoxo que digamos ¿no?
#Abro el fichero y añado a la lista_iad
>>> with open("bloc5C.iad",encoding="utf-8") as fichero_iad:
for line in fichero_iad:
lista_iad.append(line[2:10]+".msk")
>>> lista_iad
['10,X,A) .msk', '81680775.msk', '81680773.msk', '81680771.msk', '81680769.msk', '81680767.msk']
>>> del lista_iad [0]
>>> lista_iad
['81680775.msk', '81680773.msk', '81680771.msk', '81680769.msk', '81680767.msk']
Un saludo y gracias por vuestro tiempo.
http://docs.python.org/library/fileinput.html#fileinput.isfirstline :P
Aunque no me parece tan chapuza quitar la primera línea, de hecho, me parece menos chapuza que utilizar el índice absoluto para obtener lo que hay que procesar (line[2:10]), si intentas con expresiones regulares? :P
Saludos
Gracias Novlucker este fin de semana me empollo la información.
Perdón por preguntas tan obvias pero mi ingles es very orribilososus
Pues estoy con las expresiones regulares. Y mas o menos las voy pillando .
Pero no se como colarlas para que me añada el texto con el filtro a la lista.
En principio la expresión regular seria una de estas dos a gusto.
r"\b8.......\b" # un string que empieza por 8+siete dígitos.
r"\b8\d{7}\b" # un string que empieza por 8+siete dígitos numéricos.
He probado con pattern y search pero no me aclaro.
Un saludo y gracias por vuestro tiempo.
Y sigo con la expresiones regulares que tienen miga.
findall :D
Saludos
Gracias Novlucker.
Gracias a tu ayuda y un amigo pythoniano he comprendido mejor el modulo re
Aquí esta la solución:
>>> patron = re.compile(r"\b8.......\b")
>>> with open("bloc5C.iad",encoding="utf-8") as file_iad:
lines = file_iad.read()
coincidencias = patron.findall(lines)
>>> coincidencias
['81460710', '81460709', '81460708', '81460707']