Python:如何将混合大小写批量重命名为小写带下划线
我写了不少我的第一个重要的Python脚本。刚刚读完PEP 8,了解到实例变量的命名最好用下划线分隔的小写字母(lower_case_with_underscores)。而我在代码中一直使用的是混合大小写(mixedCase)来命名变量。为了让我的代码更符合Python的风格,我想把这些变量名改成下划线分隔的小写字母,因为这才是我们这里的标准做法。
我可能可以写个脚本来搜索混合大小写的变量名,然后智能地替换成下划线分隔的小写字母,但在我可能重新发明轮子之前,我想知道是否已经有现成的解决方案,比如在某个懂Python的编辑器里,或者作为一个独立的应用程序;或者有没有其他方法可以把所有的混合大小写变量名转换成下划线分隔的小写字母。我搜索了很久,但没有找到合适的解决方案。如果有任何特别能实现这个结果的技巧,我会非常感激。
1 个回答
12
我用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
这个工具可以找到所有混合大小写的变量名,但不会影响到大写字母开头的单词,所以类名会保持不变。比如说,myVariable会变成my_variable,但MyClass还是MyClass。
顺便提一下,现在我完成了这个转换,我觉得混合大小写的样子比下划线分隔的小写更好看。代码里出现那么多下划线感觉有点奇怪。不过我会按照Python的风格来做,看看自己能不能习惯,特别是如果我希望别人能看到或使用我的代码;或者我也可以按照我喜欢的方式来写,现在我有了一个简单的方法可以把它转换成PEP 8的风格,如果我打算公开我的代码的话。