Тёмный

BUSCAR en ARCHIVOS EXTERNOS TXT con Expresiones regulares - Python avanzado capítulo 19 

Programación Fácil
Подписаться 45 тыс.
Просмотров 6 тыс.
50% 1

BUSCAR en ARCHIVOS EXTERNOS TXT con Expresiones regulares - Python avanzado capítulo 19
Todo el código del capítulo y temario en mi sitio web:
www.programaci...
Seguimos con la entrada y salida de datos. En este capítulo aprenderás a buscar texto en un archivo con extensión .txt.
Lo haremos gracias a las expresiones regulares.
🔷¿Tienes dudas o sugerencias? Comenta.
🔶Curso básico a avanzado de Python (COMPLETO):
bit.ly/3agrFF7
🔴Instagram: programacion_facil
⚫Twitter: bit.ly/37aeJAe
🔵Facebook: bit.ly/2OgJT0a
🔴GitHub: bit.ly/39h38PW
🔶Más cursos de programación aquí:
bit.ly/2Wny244
🔷Vector de la miniatura:
www.freepik.es...
Vector de Coche creado por vectorpocket - www.freepik.es
🔷Vector de corte:
www.freepik.es...
Vector de Icono creado por fullvector - www.freepik.es

Опубликовано:

 

10 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 35   
@djpuxo
@djpuxo Год назад
Estoy siguiendo todos tus cursos sobre py. He intentado aprender a programar muchas veces pero sin éxito. Por primera vez estoy avanzando poco a poco y comprendiendo como funciona. Muchísimas gracias master, es el mejor canal de programación con diferencia.
@ProgramacionFacilYT
@ProgramacionFacilYT Год назад
Hola, muchas gracias por tu comentario. Me alegra mucho que mis cursos te estén ayudando a aprender Python. Estoy seguro de que podrás crear proyectos increíbles con en un futuro muy cercano. Si quieres aprender mucho Python y practicar, te recomiendo el curso que estoy haciendo ahora, el de Máster en Python. Te animo a que sigas practicando y compartiendo tus avances. Un saludo. 👍
@JuanDa1709
@JuanDa1709 4 года назад
Muchas gracias por resolver mi duda!, ya se me había olvidado lo de las expresiones regulares jaja, creo que en cualquier momento le daré otro repaso. Por cierto quería pedirte otro favor jeje, podrías por favor hablar en otro vídeo acerca de las importaciones circulares, es que ya he tenido este problema y me gustaría conocer bien como funciona y de igual manera solucionarlo. ¡Un saludo!
@ProgramacionFacilYT
@ProgramacionFacilYT 4 года назад
Vale, intentaré explicarlo pronto, me lo dejo pendiente para cuando acabe con los archivos. ¡Saludos!
@alekusnaf
@alekusnaf 4 года назад
with open("ale2.txt", encoding='utf-8') as data: lineas = data.readlines() for linea in lineas: if linea.find("Todopoderoso") == -1: pass else: print("SI")
@nicolasexp5439
@nicolasexp5439 3 года назад
Sería posible hacer que muestre entre comillas la palabra a buscar (La palabra "Programación" ha sido encontrada.)? Muchas gracias por el vídeo
@ProgramacionFacilYT
@ProgramacionFacilYT 3 года назад
Sí, solo tienes que añadir dos concatenaciones extra (con el símbolo + si no quieres espacios extra) y escapar las comillas, si son simples con dobles y si son dobles con simples: if buscar: print("La palabra", ' " ' +palabra+' " ', "ha sido encontrada.") else: print("La palabra", ' " '+palabra+' " ', "no ha sido encontrada.")
@wutrerasl
@wutrerasl 19 дней назад
Estimado, que puedo hacer si necesito buscar una palabra pero en el print quiero que aparezca una frase completa donde se encuetra, y ademas la busqueda debo realizarla dentro de 100 o mas archivos se texto. Podria darme una idea porfa.
@alekusnaf
@alekusnaf 4 года назад
Ésto fue lo que me enseñaste: try: si = 0 palabra = input("Ingresa palabra a buscar: ") with open("ale2.txt", encoding='utf-8') as data: lineas = data.readlines() for linea in lineas: if linea.find(palabra) == -1: pass else: si += 1 if si >= 1: print(f"La palabra {palabra} ha sido encontrada") else: print(f"La palabra {palabra} NO ha sido encontrada") except FileNotFoundError: print("Archivo no Existe")
@ProgramacionFacilYT
@ProgramacionFacilYT 4 года назад
Está excelente Alejandro. ¡Saludos!
@alekusnaf
@alekusnaf 4 года назад
import re try: palabra = input("Ingresa palabra a buscar: ") with open('ale.txt', 'r', encoding='utf-8') as texto: for linea in texto: buscar = re.search(palabra,linea) if buscar: print(f"La palabra {palabra} ha sido encontrada") else: print(f"La palabra {palabra} NO ha sido encontrada") except FileNotFoundError: print("Archivo no Existe")
@Karldt2012
@Karldt2012 Год назад
Hola Tengo exactamente el mismo codigo, y ocurre que le dejo el print(buscar) me muestra la ubicacion y la palabra encontrada....PEROOOO... El mensaje al final es que "La Palabra .... NO ha sido encontrada." Es decir pareciera que ignora el TRUE de la condicion a la variable buscar. He revisado linea por linea y comparado exactamente igual al codigo que aparece en el VideoTutorial y NO he podido encontrar el Error. Y esta EXACTAMENTE igual al Codigo del VideoTutorial con la misma Identacion y todo. Aqui les dejo MI CODIGO para que por favor me digan si es que he copiado algo mal. Agradezco la orientacioin ... Cordial saludo # Ejemplo de manejo de Archivos Planos desde Python # Se deben revisar ciertos comportamientos pues no funciona del todo bien import re try: palabra = input("Por favor ingrese la Palabra a buscar en el Archivo de Texto : ") with open('Palabras.txt','r',encoding="utf-8") as texto: for x in texto: buscar = re.search(palabra,x) print(buscar) if buscar: print(f"La Palabra ... {palabra} ... se encuentra en El Archivo.txt ") else: print(f"La Palabra --- {palabra} --- NOOO se encuentra en El Archivo, estará con Mayuscula Inicial?") except FileNotFoundError: print("El Archivo NO existe, por favor revise...")
@felixcorderorangel278
@felixcorderorangel278 Год назад
Muchas gracias! y si quiero buscar frases completas? me ocurre que puede ser que la frase quede cortada entre dos líneas de texto y no me aparece. Ejemplo: texto1: linea1: la casa es pequeña. texto2 linea1:la casa es linea2.:pequeña Si busco "la casa es pequeña" en texto1 no hay problema porque está en la primera linea, pero si lo hago en texto2 no funcion. ¿Cómo hacer para que en texto2 pueda buscar "la casa es pequeña"? Mil gracias
@miguelangelcastilloheras8389
@miguelangelcastilloheras8389 2 года назад
Como puedo hacer si quiero buscar una expresión que está en dos líneas incluyendo numeros Por ejemplo, necesito buscar:"Couple-Displace Temperature2D 1., 1, 1e05" Como ves, lo que necesito buscar son palabras y números Podrías decirme cómo hacerlo? Y cómo puedo guardar la posición de la línea donde se encuentra los número?
@efn4386
@efn4386 4 года назад
Y si la palabra se introduce através del teclado?
@JuanDa1709
@JuanDa1709 4 года назад
Hola Juan!. La palabra puede ser buscada de igual manera solo que la variable en este caso "palabra" será una entrada o input y listo no se requieren de más cambios, espero que te haya ayudado y sí no entendí bien tu pregunta, te ofresco una disculpa.
@efn4386
@efn4386 4 года назад
@@JuanDa1709 Era lo que suponía, gracias.
@ProgramacionFacilYT
@ProgramacionFacilYT 4 года назад
¡Perfecto!
@codigodelabibliaenespanol
@codigodelabibliaenespanol 4 года назад
Hola, como hacer para que python haga busquedas en saltos equidistantes es decir si tengo por ejemplo un archivo txt grande, y quiero que busque determinada palabra en saltos de 1 luego 2 luego 3 etc hasta que revise todos los caracteres y si la encuentra mostrar en pantalla en cuantos saltos esta. Por ejemplo tengo los caracteres dksjAdjdnMdkjeOdkhqR y quiero que mediante los saltos me encuentre la palabra AMOR. En este caso los saltos de letras serian de 5 osea cada 5 letras ha encontrado lo que le he pedido
@ProgramacionFacilYT
@ProgramacionFacilYT 4 года назад
Hola, te pasaste de específico jajaja. Una forma de hacerlo sería así, no necesitas especificar saltos, ya que a la que no se encuentren las letras que buscas exactamente en esa posición, no las va a encontrar, de esta forma, da igual el orden y la posición. import re try: letra1 = "A" letra2 = "M" letra3 = "O" letra4 = "R" with open ('D:/texto.txt', 'r', encoding="utf-8") as texto: for linea in texto: buscar = re.search(letra1,linea) buscar1 = re.search(letra2, linea) buscar2 = re.search(letra3, linea) buscar3 = re.search(letra4, linea) if buscar and buscar1 and buscar2 and buscar3: print("La palabra", letra1,letra2,letra3,letra4, "ha sido encontrada") else: print("La palabra no ha sido encontrada.") except FileNotFoundError: print("Archivo no encontrado.") Saludos Alvaro :D
@codigodelabibliaenespanol
@codigodelabibliaenespanol 4 года назад
@@ProgramacionFacilYT Hola, ya lo eche a andar y corre de maravilla. Sin embargo no habra forma que sea por saltos equidistantes? es decir como tu lo diseñas encuentra las palabras desde cualquier forma, pero habra una manera de decirle al programa que haga saltos de 1 a 100 por ejemplo y que busque mediante todos esos saltos esa palabra y me muestre que x palabra se encuentra en saltos de a 20 por ejemplo.
@alekusnaf
@alekusnaf 4 года назад
Buenas, tengo el mismo problema de JohnyCruel . Siempre me da False.
@ProgramacionFacilYT
@ProgramacionFacilYT 4 года назад
Hola, precisamente se puede hacer con uno modos que no expliqué en el capítulo, que seguramente explique más adelante. Por el momento lo dejé para seguir avanzando en el curso. Por si necesitas una idea, lo puedes hacer con el módulo nmap: en el if pones la palabra a buscar y te devuelve un true o false. (con lo que he utilizado el if true, else para los prints). import mmap with open('G:/Python/texto.txt', 'rb', 0) as texto, \ mmap.mmap(texto.fileno(), 0, access=mmap.ACCESS_READ) as s: if s.find(b'idea') != -1: print('La palabra ha sido encontrada') else: print('La palabra no ha sido encontrada') Es una idea de muchas, espero que te sirva. ¡Saludos!
@JohnyCruel
@JohnyCruel 4 года назад
Haciendo una prueba, en casa, he cargado un archivo con varias líneas de texto, al intentar realizar la búsqueda de una palabra que existe, y justamente esta en mitad del archivo, cuando search termina de buscar en la ultima linea, el resultado de salida siempre es FALSE, dado que search encuentra en una posición intermedia pero sigue recorriendo hasta fin del fichero, y al llegar al final, obviamente no la encuentra. Mi pregunta es... como podríamos buscar sin que llegara a dar un falso resultado el search? Una solución que se me ocurre, es que cuando encuentre la primera coincidencia, efectúe un break en el interior del bucle, para que la condición de search, cumpla con True, quizás no sea demasiado ortodoxo, pero a bote pronto, es la única opción que se me ocurre, por ello te planteo esta cuestión, para saber si se puede hacer de otra forma, bien con break, bien con una variable de control que pongamos a True, si encuentra al menos una coincidencia o si hay alguna otra forma mas elegante. Muchas gracias por tus vídeos y un abrazo fuerte amigo ;-)
@ProgramacionFacilYT
@ProgramacionFacilYT 4 года назад
Hola, ¿me podrías mandar el código que utilizas? ¡Un saludo amigo! 😄
@JohnyCruel
@JohnyCruel 4 года назад
Programación Fácil por supuesto... te lo pongo por aquí o si prefieres, te lo mando por correo, junto con el archivo de texto.
@JohnyCruel
@JohnyCruel 4 года назад
@@ProgramacionFacilYT Te dejo por aquí, por un lado el contenido del archivo de texto: "Reina en mi espíritu una alegría admirable, muy parecida a las dulces alboradas de la primavera, de que gozo aquí con delicia. Estoy solo, y me felicito de vivir en este país, el más a propósito para almas como la mía, soy tan dichoso, mi querido amigo, me sojuzga de tal modo la idea de reposar, que no me ocupo de mi arte. Ahora no sabría dibujar, ni siquiera hacer una línea con el lápiz; y, sin embargo, jamás he sido mejor pintor Cuando el valle se vela en torno mío con un encaje de vapores;" Y a continuación el código de búsqueda, que es como el tuyo del ejemplo, y como te indiqué, si buscas por ejemplo, la palabra idea, que como veras, aparece en la mitad del texto, cuando termina de recorrer todas las lineas, termina la condición en False. ## ASI NO FUNCIONA PARA BUSQUEDAS EN PALABRAS INTERMEDIAS try: palabra = "idea" with open("TXT/texto.txt", "r", encoding="utf-8") as fichero: for lineas in fichero: encontrada = re.search(palabra, lineas) if encontrada: print('La palabra', palabra, 'a sido encontrada') else: print('La palabra', palabra, 'no a sido encontrada') except FileNotFoundError: print('Archivo no encontrado...') La manera que he encontrado, para que encuentre la primera coincidencia es igual, pero añadiendo un break del siguiente modo: ## ASI SI FUNCIONA SI LO QUE BUSCAMOS ESTA EN EL MEDIO try: palabra = "idea" with open("TXT/texto.txt", "r", encoding="utf-8") as fichero: for lineas in fichero: encontrada = re.search(palabra, lineas) if encontrada: # CONDICION PARA PARAR EL BUCLE UNA VEZ ENCONTRADA LA 1º COINCIDENCIA break if encontrada: print('La palabra', palabra, 'a sido encontrada') else: print('La palabra', palabra, 'no a sido encontrada') except FileNotFoundError: print('Archivo no encontrado...') Un fuerte abrazo y un saludo amigo ;-)
@ProgramacionFacilYT
@ProgramacionFacilYT 4 года назад
Hola, precisamente se puede hacer con uno modos que no expliqué en el capítulo, que seguramente explique más a delante. Por el momento lo dejo para seguir avanzando en el curso. Por si necesitas una idea, lo puedes hacer con el módulo nmap: en el if pones la palabra a buscar y te devuelve un true o false. (con lo que he utilizado el if true, else para los prints). import mmap with open('G:/Python/texto.txt', 'rb', 0) as texto, \ mmap.mmap(texto.fileno(), 0, access=mmap.ACCESS_READ) as s: if s.find(b'idea') != -1: print('La palabra ha sido encontrada') else: print('La palabra no ha sido encontrada') Es una idea de muchas, espero que te sirva al menos de momento para quitar el gusanillo de que no encuentre la palabra en el documento. Un abrazo, saludos amigo!!
@JohnyCruel
@JohnyCruel 4 года назад
@@ProgramacionFacilYT Me he fijado que en la apertura del archivo de texto, lo abres en modo binario, en lugar de modo texto...🤔 Y por lo que deduzco, el mmap lo usas para ir leyendo el archivo de texto en modo binario, de manera secuencial... no se si estoy equivocado... porque esta devolviendo un flujo a través de s, usando un método find... buscando la palabra 'idea'... lo que no entiendo muy bien es (b'idea')... tendré que buscar en la documentación de python el modulo mmap para entender un poco mas que es lo que hace y devuelve exactamente, pero creo que el concepto me queda mas o menos claro de lo que esta haciendo. Muchas gracias @Programación Fácil, un abrazo amigo 😉!!! y un abrazo enorme!!!
@Karldt2012
@Karldt2012 Год назад
Hola Tengo exactamente el mismo codigo, y ocurre que le dejo el print(buscar) me muestra la ubicacion y la palabra encontrada....PEROOOO... El mensaje al final es que "La Palabra .... NO ha sido encontrada." Es decir pareciera que ignora el TRUE de la condicion a la variable buscar. He revisado linea por linea y comparado exactamente igual al codigo que aparece en el VideoTutorial y NO he podido encontrar el Error. Y esta EXACTAMENTE igual al Codigo del VideoTutorial con la misma Identacion y todo. Aqui les dejo MI CODIGO para que por favor me digan si es que he copiado algo mal. Agradezco la orientacioin ... Cordial saludo # Ejemplo de manejo de Archivos Planos desde Python # Se deben revisar ciertos comportamientos pues no funciona del todo bien import re try: palabra = input("Por favor ingrese la Palabra a buscar en el Archivo de Texto : ") with open('Palabras.txt','r',encoding="utf-8") as texto: for x in texto: buscar = re.search(palabra,x) print(buscar) if buscar: print(f"La Palabra ... {palabra} ... se encuentra en El Archivo.txt ") else: print(f"La Palabra --- {palabra} --- NOOO se encuentra en El Archivo, estará con Mayuscula Inicial?") except FileNotFoundError: print("El Archivo NO existe, por favor revise...")
@ProgramacionFacilYT
@ProgramacionFacilYT Год назад
Hola, parece problema de indentaciones (no sé si ha ocurrido al pegar aquí o ya estaba). He mejorado un poco el código y te permite que pongas tanto la palabra a buscar como el nombre del archivo. Hay que respetar mayúsculas y minúsculas también en el nombre del archivo: import re palabra = input("Por favor ingrese la Palabra a buscar en el Archivo de Texto : ") archivo = input("Por favor ingrese el nombre del archivo de texto (incluyendo la extensión): ") try: with open(archivo,'r',encoding="utf-8") as texto: encontrado = False for x in texto: buscar = re.search(palabra, x) if buscar: encontrado = True print(f"La palabra '{palabra}' fue encontrada en la siguiente línea del archivo: {x}") if not encontrado: print(f"La palabra '{palabra}' no fue encontrada en el archivo '{archivo}'.") except FileNotFoundError: print(f"No se encontró el archivo '{archivo}'. Por favor, revise si el nombre del archivo es correcto.") Espero que te sirva ¡Saludos!
@Karldt2012
@Karldt2012 Год назад
@@ProgramacionFacilYT .... Hola muchas gracias por la respuesta . Seguiré sus consejos. Cordial saludo
Далее
Curso Python: 13. Escritura y lectura de archivos
13:16
Manejo de archivos txt con Python
10:39
Просмотров 19 тыс.
Buscando y contando palabras en archivos con Python
9:32
Compilers, How They Work, And Writing Them From Scratch
23:53