Given a value that’s in CamelCase (like a Java Variable Name pattern), and you want to change it to snake_case (python, perl, and maybe other scripting languages), here is the python function to do it.
def to_snake_case(given_value):
import re
s = re.compile('([A-Z])')
return s.sub(r'_\1', given_value).lower().replace('__', '_').lstrip('_')
print(to_snake_case1(‘CamelCase’))
print(to_snake_case1(‘camelcase’))
print(to_snake_case1(‘CCamAAelCase’))
print(to_snake_case1(‘CCamel_Case’))
camel_case
camelcase
c_cam_a_ael_case
c_camel_case
If you want the Consecutive Capital Letters to be kept as one group, then a slight modification of the function will do.
def to_snake_case1(given_value):
import re
s = re.compile('([A-Z]+)')
return s.sub(r'_\1', given_value).lower().replace('__', '_').lstrip('_')
print(to_snake_case1(‘CamelCase’))
print(to_snake_case1(‘camelcase’))
print(to_snake_case1(‘CCamAAelCase’))
print(to_snake_case1(‘CCamel_Case’))
camel_case
camelcase
ccam_aael_case
ccamel_case
If you want to give a list/array of values, and return all the values changed to snake case, here’s the modified function.
def to_snake_case(given_list):
import re
s = re.compile('([A-Z]+)')
result = []
for e in given_list:
result.append(b.sub(r'_\1', e).lower().replace('__', '_').lstrip('_'))
return result
print(to_snake_case2([‘CamelCase’, ‘camelcase’, ‘CCamAAelCase’, ‘CCamel_Case’]))
[‘camel_case’, ‘camelcase’, ‘ccam_aael_case’, ‘ccamel_case’]