我正在尝试拆分和重命名一些丑陋的变量名称(例如):
In[1]: import re
ugly_names = ['some-Ugly-Name', 'ugly:Case:Style', 'uglyNamedFunction']
new_names = []
In[2]: patt = re.compile(r'(?<=[a-z])[\-:]?(?=[A-Z])')
In[3]: for name in ugly_names:
loc_name = patt.split(name)
new_names.append("_".join(s.lower() for s in loc_name))
print(new_names)
Out[3]: ['some_ugly_name', 'ugly_case_style', 'uglynamedfunction']
我的模式有什么问题?为什么它不匹配空字符串,或者我错过了什么?
p.s。:Python regex
是否可以拆分空字符串,还是应该使用其他一些函数和.groups()
?
答案 0 :(得分:2)
不是问题的直接答案,只是另一种方式 - 使用inflection
library(必须单独处理:
):
>>> import inflection
>>>
>>> [inflection.underscore(name.replace(":", "_")) for name in ugly_names]
['some_ugly_name', 'ugly_case_style', 'ugly_named_function']