Python: как пакет переименовать смешанный случай в нижний регистр с символами подчеркивания

Я написал небольшую часть своего первого значимого Python script. Я только что закончил чтение PEP 8, и я узнал, что lower_case_with_underscores предпочтительнее, например, имена переменных. Я использую mixedCase для имен переменных повсюду, и я бы хотел, чтобы мой код был более Pythonic, изменив их на lower_case_with_underscores, если это так, как мы делаем вещи здесь.

Возможно, я мог бы написать файл script, который ищет mixedCase и пытается его заменить, но прежде чем я буду изобретать колесо, мой вопрос заключается в том, существует ли решение для этого уже в редакторе под управлением Python или в автономное приложение; или существует ли другой подход, который выполнит задачу преобразования всех имен переменных mixedCase в lower_case_with_underscores. Я искал справедливый бит для решения, но ничего не появлялся. Любой метод, который специально дал бы этот результат, был бы оценен.

Ответ 1

Я смог выполнить то, что хотел, используя 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

Он находит каждый экземпляр mixedCase - но не CapitalWords, поэтому имена классов остаются нетронутыми - и заменяет его на lower_case_with_underscores; например myVariable становится my_variable, но MyClass остается MyClass.

(На несвязанной ноте, теперь, когда я это сделал, мне кажется, что я предпочитаю внешний вид mixedCase по сравнению с lower_case_with_underscores. Появление столь большого количества подчеркиваний по всему моему коду странно. Но я сделаю все на Python Way и посмотрим, привык ли я к этому, особенно если я намереваюсь, чтобы мой код просматривался или работал с другими, или, может быть, я сделаю это так, как мне нравится, и теперь у меня есть простой способ его преобразования в PEP 8, если я намерен сделать код общедоступным.)