Estimados, buenas noches, quisiera saber como podría traer un un dato después de una palabra de referencia sabiendo que no siempre las filas o los datos pueden ser iguales pero las palabras de referencia si, ejemplo
name XXX_NBX_XXX
description XXX_NBX_XXX
tcont 1 name T1 profile UL400M
tcont 1 gap mode2
gemport 1 tcont 1
gemport 1 traffic-limit downstream DL400M
service-port 1 vport 1 user-vlan 118 vlan 118
ejemplo quiero extraer el dato que sigue de la palabra referencial «profile» y «downstream»
digo que aveces esa plantilla puede variar porque puede tener una fila menos es decir
name XXX_NBX_XXX
description XXX_NBX_XXX
tcont 1 name T1 profile UL400M
gemport 1 tcont 1
gemport 1 traffic-limit downstream DL400M
service-port 1 vport 1 user-vlan 118 vlan 118
pero esa palabra de referencia si estarán y pues me gustaría como poder extraerlo
Para ese caso, lo que necesitas usar son expresiones regulares. Estas lo que hacen es extraer la información que cumpla según con el patrón de búsqueda que vos le indiques, en tu caso:
busqueda = r»profile\s+(\S+)»
resultado = re.findall(busqueda , variabledeltexto)
En este caso, primero le indicamos que es un string crudo con la «r» para que no reconozca los caracteres especiales. Luego, definimos la palabra de referencia, oséa «profile», luego necesitamos decirle que estamos buscando cualquier caracter pero que no tenga espacios en blanco por ello ponemos «(\S)» y el + es para indicar que puede haber mas de un carácter y para que nos lo traiga en una sola palabra y no en una lista y entre paréntesis porque este es el patrón principal que estamos buscando.