2014-05-12 14 views
7

Ho scritto un bel po 'del mio primo script Python significativo. Ho appena finito di leggere PEP 8 e ho appreso che lower_case_with_underscores è preferito per i nomi delle variabili di esempio. Sto usando mixedCase per i nomi delle variabili in tutto, e mi piacerebbe che il mio codice fosse più Pythonic cambiandolo in lower_case_with_underscores se è così che facciamo le cose qui intorno.Python: come rinominare in batch case minuscole con caratteri minuscoli con trattini bassi

Probabilmente potrei scrivere uno script che cerca mixedCase e tenta di sostituirlo in modo intelligente, ma prima di reinventare potenzialmente la ruota, la mia domanda è se esiste già una soluzione, sia all'interno di un editor esperto di Python o come applicazione standalone; o se esiste un altro approccio che assolverebbe il compito di convertire tutti i nomi di variabili mixedCase in lower_case_with_underscores. Ho cercato un bel po 'per una soluzione ma non ho trovato nulla. Sarebbe apprezzata qualsiasi tecnica che specificatamente produrrebbe questo risultato.

+1

Ciò di cui hai bisogno è un IDE con funzionalità di refactoring (devi modificare i tag o almeno aggiungerne alcuni come "ide"). Eclipse fa questo (cursore sulla variabile, shift + alt + r), vim può farlo (mi dispiace perl: http://stackoverflow.com/questions/597687/changing-variable-names-in-vim), che editore usi? – Emilien

+0

Attualmente sto usando BBEdit per OS X, che è un buon editor ma non è un IDE appropriato e non ha smarts speciali di Python oltre la colorazione della sintassi. Buon suggerimento per cambiare tag: hai qualche opinione sul fatto che Eclipse o Vim sarebbero migliori per questo particolare compito? –

+0

Non rivendico eclipse o vim o BBedit o qualsiasi altro editor è un editor migliore, ma potresti iniziare qui: https://wiki.python.org/moin/IntegratedDevelopmentEnvironments e sceglierne uno con la funzione di refactoring (ad esempio PyCharm). – Emilien

risposta

10

sono stato in grado di realizzare ciò che volevo utilizzare GNU sed:

sed -i -e :loop -re 's/(^|[^A-Za-z_])([a-z0-9_]+)([A-Z])([A-Za-z0-9_]*)'\ 
'([^A-Za-z0-9_]|$)/\1\2_\l\3\4\5/' -e 't loop' myFile.py 

trova ogni istanza di mixedCase - ma non CapitalWords, quindi i nomi delle classi vengono lasciati intatti - e lo sostituisce con lower_case_with_underscores; per esempio. myVariable diventa my_variable, ma MyClass rimane MyClass.

(Su una nota non correlata, ora che l'ho fatto, penso che preferisco l'aspetto di mixedCase su lower_case_with_underscores. L'aspetto di così tanti underscore in tutto il mio codice è strano. Ma farò cose di Python Bene, vediamo se mi ci abituo, in particolare se intendo che il mio codice venga visto o lavorato da altri, o forse lo farò come piace a me e ora ho un modo semplice per convertirlo in il modo PEP 8 se intendo rendere pubblico il codice.)

+2

Mentre scrivo altro codice, ho trovato che lower_case_with_underscore è più bello di mixedCase in python. (Nel mio codice C/C++ rimarrò su mixedCases). Grazie per la tua soluzione. – JoYSword

Problemi correlati