Come apportare modifiche a più file usando Python

Dì che qualcuno ha familiarità con l'ortografia inglese e ha deciso di completare la sua laurea negli Stati Uniti. Gli viene chiesto di scrivere un articolo su Python per la classe. È esperto in Python e non ha problemi a scrivere il giornale. Stava parlando di immagini in una parte del suo articolo e ha scritto più di una volta la parola grigio (Ortografia inglese) invece di grigio (Ortografia USA), oltre a Quartiere (Ortografia inglese) invece di Quartiere (Ortografia USA). Ma ora è negli Stati Uniti e deve passare attraverso tutte le parole scritte alla maniera britannica e sostituirle con le ortografie degli Stati Uniti.

Questo è uno dei tanti scenari in cui è necessario modificare l'ortografia o l'errore multiplo posizioni. 

In questo suggerimento rapido, ti mostrerò un esempio in cui abbiamo cinque file di testo che hanno scritto male il mio nome. Cioè, invece di scrivere Abder, Adber è scritto. L'esempio mostrerà come possiamo usare Python per correggere l'ortografia del mio nome in tutti i file di testo inclusi in una directory.

Iniziamo!

Preparazione dei dati

Prima di andare avanti con l'esempio, prepariamo i dati (file di testo) con i quali vogliamo lavorare. Vai avanti e scarica la directory con i suoi file. Decomprimi la directory e ora sei tutto pronto.

Come puoi vedere, abbiamo una directory chiamata Abder che contiene cinque file diversi nominati 1,2,3,4 e 5.

Implementazione

Andiamo alla parte divertente. La prima cosa che dobbiamo fare è leggere il contenuto della directory Abder. Per questo, possiamo usare il listdir () metodo, come segue:

import os directory = os.listdir ('/ Users / DrAbder / Desktop / Abder')

Se proviamo a vedere cosa c'è dentro la directory, possiamo fare quanto segue:

directory di stampa

In tal caso, otterremo:

['.DS_Store', '1.rtf', '2.rtf', '3.rtf', '4.rtf', '5.rtf']

Questo dimostra che abbiamo cinque rft file all'interno della directory.

Per assicurarsi che stiamo lavorando con la directory corrente (directory di interesse), possiamo usare chdir come segue:

os.chdir ( '/ Users / DrAbder / Desktop / Abder')

La prossima cosa che dobbiamo fare è passare in rassegna tutti i file nella directory Abder. Possiamo usare a for-loop come segue:

per il file nella directory:

Dal momento che vogliamo cercare in ognuno dei cinque file nella directory e cercare Adber, la cosa normale da fare in questa fase è aprire e leggere il contenuto di ciascun file:

open_file = open (file, 'r') read_file = open_file.read ()

Ora arriva un passaggio fondamentale, soprattutto quando si parla di abbinamento di modelli, nel nostro caso, di ricerca Adber. Questo passaggio è l'uso di espressioni regolari. In Python, per usare le espressioni regolari, useremo il modulo re. 

Utilizzeremo due funzioni principali da questo modulo. Il primo è compilato ():

Compilare un modello di espressione regolare in un oggetto espressione regolare, che può essere utilizzato per la corrispondenza utilizzando il suo incontro()ricerca() metodi.

E il secondo è sub (), per sostituire l'ortografia sbagliata con quella corretta. Faremo quindi quanto segue:

regex = re.compile ('Adber') read_file = regex.sub ('Abder', read_file)

Infine, vogliamo scrivere il nuovo testo dopo la sostituzione nei nostri file, come segue:

write_file = open (file, 'w') write_file.write (read_file)

Mettere tutto insieme

In questa sezione, vediamo come tutto lo script Python, che cercherà Adber in ogni file e sostituirlo con Abder, guarderà:

import os, re directory = os.listdir ('/ Users / DrAbder / Desktop / Abder') os.chdir ('/ Users / DrAbder / Desktop / Abder') per file nella directory: 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)

Come possiamo vedere, Python rende molto facile effettuare modifiche su più file usando il for-loop. Un'altra parte importante da ricordare qui è l'uso delle espressioni regolari per la corrispondenza dei modelli. 

Se vuoi saperne di più sui loop di Python, controlla A Smooth Refresher su Python's Loops. E, per ulteriori informazioni sulle espressioni regolari, controlla le espressioni regolari in Python.