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!
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
.
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 suoincontro()
ericerca()
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)
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.