Python:如何使用下划线将混合大小写重命名为小写

时间:2014-05-12 11:08:26

标签: python variables ide refactoring naming-conventions

我已经写了一些我的第一个重要的Python脚本。我刚读完PEP 8,我了解到lower_case_with_underscores是实例变量名的首选。我一直在使用mixedCase作为变量名,并且我希望我的代码通过将它们更改为lower_case_with_underscores来制作更多Pythonic,如果这就是我们在这里做事的方式。

我可能会编写一些搜索mixedCase的脚本并试图巧妙地替换它,但在我可能重新发明轮子之前,我的问题是这个解决方案是否已经存在,无论是在精通Python的编辑器中还是作为独立的应用;或者是否有另一种方法可以完成将所有mixedCase变量名转换为lower_case_with_underscores的任务。我已经搜索了一些解决方案,但没有发现任何问题。任何特别会产生这种结果的技术都将受到赞赏。

1 个答案:

答案 0 :(得分:11)

我能够用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方式的事情看看我是否习惯了它,特别是如果我打算让别人看到或使用我的代码;或者我可能会按照我喜欢的方式进行,现在我有了一种简单的方法将其转换为PEP 8方式,如果我打算公开代码。)