Digamos que alguien está familiarizado con la ortografía británica y ha decidido completar su título en los Estados Unidos. Se le pide que escriba un artículo sobre Python para la clase. Él está bien versado en Python y no tiene ningún problema al escribir el documento. Estaba hablando de imágenes en una parte de su papel y escribió más de una vez la palabra gris
(Ortografía británica) en lugar de gris
(Ortografía de Estados Unidos), además de barrio
(Ortografía británica) en lugar de barrio
(Ortografía de Estados Unidos). Pero ahora está en los EE. UU. Y tiene que repasar todas las palabras deletreadas a la manera británica y sustituirlas por la ortografía de los EE. UU..
Este es uno de los muchos escenarios en los que necesitamos cambiar algo de ortografía o error en múltiple localizaciones.
En este consejo rápido, te mostraré un ejemplo en el que tenemos cinco archivos de texto que han escrito incorrectamente mi nombre. Es decir, en lugar de escribir. Abder
, Adber
está escrito. El ejemplo le mostrará cómo podemos usar Python para corregir la ortografía de mi nombre en todos los archivos de texto incluidos en un directorio.
Empecemos!
Antes de continuar con el ejemplo, preparemos los datos (archivos de texto) con los que queremos trabajar. Anímate y descarga el directorio con sus archivos. Descomprima el directorio y ya está todo listo..
Como puedes ver, tenemos un directorio llamado Abder
que contiene cinco archivos diferentes nombrados 1,2,3,4, y 5
.
Vayamos a la parte divertida. Lo primero que debemos hacer es leer el contenido del directorio. Abder
. Para esto, podemos utilizar el listdir ()
método, de la siguiente manera:
import os directory = os.listdir ('/ Users / DrAbder / Desktop / Abder')
Si intentamos ver qué hay dentro del directorio, podemos hacer lo siguiente:
imprimir directorio
En cuyo caso, obtendremos:
['.DS_Store', '1.rtf', '2.rtf', '3.rtf', '4.rtf', '5.rtf']
Esto demuestra que tenemos cinco rft
archivos dentro del directorio.
Para asegurarnos de que estamos trabajando con el directorio actual (directorio de interés), podemos usar chdir
como sigue:
os.chdir ('/ Users / DrAbder / Desktop / Abder')
Lo siguiente que debemos hacer es recorrer todos los archivos en el directorio Abder
. Podemos usar un en bucle
como sigue:
para archivo en directorio:
Como queremos buscar en cada uno de los cinco archivos en el directorio y buscar Adber
, Lo normal en esta etapa es abrir y leer el contenido de cada archivo:
open_file = open (file, 'r') read_file = open_file.read ()
Ahora viene un paso vital, especialmente cuando se habla de la coincidencia de patrones, en nuestro caso, la búsqueda de Adber
. Este paso es el uso de expresiones regulares. En Python, para usar expresiones regulares, usaremos el módulo re.
Vamos a utilizar dos funciones principales de este módulo. El primero es compilar ():
Compile un patrón de expresión regular en un objeto de expresión regular, que puede usarse para hacer coincidencias usando supartido()
ybuscar()
metodos.
Y el segundo es sub (), para sustituir la ortografía incorrecta con la correcta. Así haremos lo siguiente:
regex = re.compile ('Adber') read_file = regex.sub ('Abder', read_file)
Finalmente, queremos escribir el nuevo texto después de la sustitución en nuestros archivos, de la siguiente manera:
write_file = abrir (archivo, 'w') write_file.write (read_file)
En esta sección, veamos cómo todo el script de Python, que buscará Adber
en cada archivo y reemplazarlo con Abder
, veré:
importar os, re directory = os.listdir ('/ Users / DrAbder / Desktop / Abder') os.chdir ('/ Users / DrAbder / Desktop / Abder') para el archivo en el directorio: open_file = open (file, 'r' ) read_file = open_file.read () regex = re.compile ('Adber') read_file = regex.sub ('Abder', read_file) write_file = open (file, 'w') write_file.write (read_file)
Como podemos ver, Python hace que sea muy fácil realizar modificaciones en múltiples archivos usando el en bucle
. Otra parte importante que se debe recordar aquí es el uso de expresiones regulares para la coincidencia de patrones..
Si quieres saber más acerca de los bucles de Python, marca A Smooth Refresher en Python's Loops. Y, para obtener más información sobre expresiones regulares, consulte Expresiones regulares en Python.