Utente:.sEdivad/Sandbox/Pywikipediabot/replace.py

Wikibooks, manuali e libri di testo liberi.

replace.py è senza dubbio uno degli script della suite più utilizzati: come si può intuire dal nome, esso consente la sostituzione di testo automatica o assistita, anche con l'ausilio di espressioni regolari(regex).

Uso di base[modifica]

Per eseguire una semplice sostituzione di testo è sufficiente il comando:

python replace.py -page:NomePagina "vecchiotesto" "nuovotesto"

dove -page: è il parametro comune a tutti gli script che indica al bot su quale singola pagina agire, "vecchiotesto" è il testo da cercare nella pagina e "nuovotesto" è il testo con cui sostituire il vecchio testo.

Una volta invocato il comando, lo script scaricherà la pagina, mostrerà il diff delle modifiche e vi chiederà se:

  • applicare le modifiche per una volta (y)
  • non applicare le modifiche (n)
  • applicare tutte le modifiche senza chiedere (a)
  • terminare il programma senza effettuare modifiche (q)

Questo è già sufficiente per effettuare sostituzioni semplici, ma una delle caratteristiche più utili e usate di questo script sono le espressioni regolari.

Effettuare sostituzioni con le regex[modifica]

Per effettuare una sostituzione con le espressioni regolari occorre usare il parametro -regex:

python replace.py -page:NomePagina -regex "([pP])erchè" "\1erché"

Questo comando consente di correggere gli accenti errati nelle parole perchè e Perchè. Il \1 contenuto nella seconda stringa indica la prima variabile tra parentesi"()" contenuta nella prima stringa trova.

È caldamente consigliabile esercitarsi con le espressione regolari, e in particolar modo fare attenzione alla greediness prima di usare questa funzione.

Il parametro -nocase[modifica]

il parametro -nocase consente di fare in modo che lo script nella sostituzione non tenga conto della distinzione maiscole/minuscole, sia con l'uso regex, sia senza. Occorre prestare attenzione, in quanto un

python replace.py -page:NomePagina -nocase "perchè" "perché"

potrebbe ad un occhio disattento avere lo stesso effetto del comando visto prima, ma in realtà sostituirebbe anche la stringa Perchè con perché, che potrebbe rovinare le maiuscole che succedono un punto.