Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: n1sen en 25 Septiembre 2017, 03:01 am



Título: [Python 3.6] Como hacer que python lea una cadena especifica de un fichero?
Publicado por: n1sen en 25 Septiembre 2017, 03:01 am
Hola, vengo a preguntar lo que dice en el titulo, me explico:
Por ejemplo, yo en un fichero de texto tengo lo siguiente:
hola como estas

En vez de que me abra todo el archivo, necesito que lea una cadena especifica, en este caso, quiero que solo lea la cadena
"estas".

No pongo código de avance por que lo único que tengo es lo de abrir y cerrar ficheros.
Por las dudas, si busque por internet y no he encontrado nada.
Gracias.


Título: Re: [Python 3.6] Como hacer que python lea una cadena especifica de un fichero?
Publicado por: engel lex en 25 Septiembre 2017, 03:05 am
Código
  1. cadena = texto_desde_archivo()
  2. if "estas" in cadena:
  3.  print("la palabra está en la cadena")


Título: Re: [Python 3.6] Como hacer que python lea una cadena especifica de un fichero?
Publicado por: n1sen en 25 Septiembre 2017, 03:23 am
Gracias  :), pero pasa lo siguiente:
Volvamos a decir que en un fichero de texto tengo esto:
di "hola"
Ya, yo quiero que lea el fichero de texto, y si se encuentra con la frase "di" siga leyendo esa linea,
en caso contrario, seguir leyendo otra linea del fichero y
cuando se tope con las comillas, quiero que extraiga el texto que aparece entre comillas.
Pero tambien sucede que uno nunca sabra que es lo que pondra el usuario, por que puede poner
gato, perro, estas, como, etc.
Ahí esta el estancamiento que he tenido.


Título: Re: [Python 3.6] Como hacer que python lea una cadena especifica de un fichero?
Publicado por: engel lex en 25 Septiembre 2017, 03:33 am
Código
  1. if "di" in texto:
  2.  arreglo = texto.split('"')
  3.  decir = arreglo[1]
  4.  print(decir)

esto es una manera poca ortodoxa pero funcional en python, split, partirá la cadena como un array basado en el separador indicado en este caso comillas dobles... entonces si el texto es
Código:
di "hola mundo"

quedará
Código:
[0]: "di"
[1]: "hola mundo"
[2]: ""

el ultimo queda vacio porque separó por comillas a pesar que luego de la ultima comilla no había nada

aquí detalle sobre split (https://www.tutorialspoint.com/python/string_split.htm)

a demás cumplirá tambien la funcion de sacar las comillas de la ecuación


Título: Re: [Python 3.6] Como hacer que python lea una cadena especifica de un fichero?
Publicado por: n1sen en 25 Septiembre 2017, 03:36 am
Gracias :)


Título: Re: [Python 3.6] Como hacer que python lea una cadena especifica de un fichero?
Publicado por: engel lex en 25 Septiembre 2017, 03:40 am
ojo... lo bueno de ese metodo es que si el usuario introduce comillas adicionales no rompe el codigo, sino simplemente genera "comportamiento inesperado" la forma común sería con find y rfind, buscar la primera y ultima comilla, así permitiría usar comillas en medio del texto, pero esto te causaría usar más validaciones (tambien puedes poner como validación que si el largo del array es mayor que 3 lance un error, hay comillas de más)