Manual:Pywikibot/replace.py/it

Replace.py è uno script appartenente al framework di pywikipedia bot.

Questo script permette al bot di eseguire sostituzioni di testo. Il bot verificherà se la pagina deve essere cambiata in base alle informazioni presenti nel file XML di dump o in base alla versione attualmente online. È possibile specificare quali pagine dovranno essere verificate.

Per maggiori informazioni digita: python replace.py -help

File correlati
Questo script si compone di tre file:
 * replace.py: il modulo principale
 * fixes.py: una lista predefinita di correzioni
 * user-fixes.py: la lista di correzioni personalizzate dell'utente. Lo scheletro vuoto di questo file può essere generato lanciando lo script generate_user_files.py.

Modalità di sostituzione
La sostituzione con replace.py può avvenire in:
 * Modalità automatica: tutte le modifiche vengono applicate senza chiedere ulteriore conferma all'utente. È opportuno utilizzare questa modalità solo con le sostituzioni ben testate e per le quali non c'è il rischio di falsi positivi. Su alcune wiki questa modalità di sostituzione potrebbe essere vietata.
 * Modalità assistita: per tutte le modifiche viene chiesta conferma all'utente mostrando la sostituzione proposta seguita dal seguente messaggio:
 * Pywikipedia, accept these changes.png
 * y: applica la modifica.
 * n: non applica la modifica.
 * e: apre la voce in un editor di testo esterno
 * b: apre la voce nel browser
 * a: passa alla modalità automatica
 * q: esce dallo script

Pagine da verificare
Questi parametri, mutualmente esclusivi, servono per indicare allo script dove reperire le informazioni sulle pagine che andranno modificate.

Sostituzioni
La sostituzione che si vuole eseguire può essere inserita in due modi mutualmente esclusivi:
 * 1) attraverso una sostituzione predefinita nel file user-fixes.py o fixes.py
 * 2) da riga di comando

Nota: il primo sistema è il più usato e quello consigliato. In questo modo tutte le espressioni regolari e le eccezioni che interessano una determinata sostituzione possono essere testate con cura e riapplicate con minor rischio di errori.

Per maggiori informazioni digita: python replace.py -help

User-fixes.py
Esempio della tipica struttura del file :

fixes = {

'esempio': { 'regex': True, 'recursive': True, 'msg': { 'it':u'Bot: oggetto della modifica' },      'replacements': [ (u'erore1', ur'errore1'), (u'erore2', ur'errore2'), ],       'exceptions': { 'inside-tags': [ 'hyperlink', 'link', 'template', 'comment', 'timeline', 'gallery', 'math', 'pre', 'startspace', 'source', 'nowiki' ],                   'require-title': [ ],                   'title': [ ],                   'inside': [ r'\[\[([Ii]mmagine|[fF]ile)\:[^\]\|]+?\|', # esclude nome immagine r'\[\[(\w\w|\w\w\w|\w\w\w\w|simple)\:[^\]]+?\]\]', # esclude interwiki ad altre lingue r'{{interprogetto[^\}]+?}}', # esclude interwiki template interprogetto r'\[\[(wikipedia|w|wiktionary|wikt|wikinews|n|wikibooks|b|wikiquote|q|wikisource|s|wikispecies|v|wikimedia|foundation|commons|meta|m|incubator|mw|mediazilla):[^\]]+?\]\]', # esclude interwiki a progetti fratelli ],                   'text-contains': [ 'escludi questo testo1', 'escludi questo testo2' ]                           }  } ,
 * 1)                               r'Album (?!d)',
 * 1)                               r'test',

}

Per disabilitare le eccezioni che non servono anteporre il carattere # come nell'esempio.
 * nome del fix: in questo caso esempio. Serve per richiamare la sostituzione con il parametro . Deve essere univoco.
 *   : analogo al parametro
 *   : analogo al parametro
 *  : definisce l'edit summary. Vedi Aiuto:Oggetto
 *  : definisce i tag delle porzioni di voce da escludere. Analogo al parametro
 *  : definisce le porzioni di testo da escludere. Analogo al parametro
 *  : analogo al parametro
 *  : analogo al parametro
 *  : analogo al parametro

Tag
Definiscono un tipo di testo e possono essere usati nelle sostituzioni predefinite o da riga di comando.
 * hyperlink: esclude tutti i collegamenti esterni (singola parentesi quadra)
 * link: esclude tutti i wikilink e gli interwiki (doppia parentesi quadra)
 * template: esclude tutti i template e i relativi parametri (doppia parentesi graffa)
 * comment: esclude il testo commentato (testo compreso all'interno dei tag )
 * timeline: esclude il testo compreso all'interno dei tag
 * gallery: esclude il testo compreso all'interno dei tag
 * math: esclude il testo compreso all'interno dei tag $$ ... $$
 * pre: esclude il testo compreso all'interno dei tag ...
 * startspace: esclude il testo su righe che iniziano con uno spazio (tipicamente esempi di codice)
 * source: esclude il testo sorgente all'interno dei tag
 * nowiki: esclude il testo compreso all'interno dei tag ...

Collegamenti esterni

 * The Python Standard Library » Regular expression operations
 * Kodos - The Python Regular Expression Debugger, per testare espressioni regolari specificamente per Python
 * Regular-Expression.Info - Introduzione alle espressioni regolari con enfasi anche alle differenti implementazioni (ad esempio Python)
 * Database XML and SQL dumps