Skip to content

Instantly share code, notes, and snippets.

@zhy0216
Last active March 30, 2017 03:21
Show Gist options
  • Save zhy0216/a1a8c1d1ee3eebba86b91288b22ec7e2 to your computer and use it in GitHub Desktop.
Save zhy0216/a1a8c1d1ee3eebba86b91288b22ec7e2 to your computer and use it in GitHub Desktop.
Camel to Snake case
def camel_to_snake_case(name: str) -> str:
# ord('a') == 97
r = []
new_group = [name[0].lower()]
for c in name[1:]:
if 97 <= ord(c) <= 122:
new_group.append(c)
else:
r.append("".join(new_group))
new_group = [c.lower()]
r.append("".join(new_group))
return "_".join(r)
# test cases
def test_camel_to_snake_case():
assert "a" == camel_to_snake_case("A")
assert "a_b_c" == camel_to_snake_case("ABC")
assert "ab_c" == camel_to_snake_case("AbC")
assert "a_bc" == camel_to_snake_case("ABc")
assert "ab_cd" == camel_to_snake_case("AbCd")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment