Skip to content

Instantly share code, notes, and snippets.

@seansummers
Created July 24, 2018 17:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seansummers/0af76c22bc9d47bd4a82762cf08a5af7 to your computer and use it in GitHub Desktop.
Save seansummers/0af76c22bc9d47bd4a82762cf08a5af7 to your computer and use it in GitHub Desktop.
Python Camel Snake Conversion
from itertools import tee
try:
from itertools import zip_longest
except ImportError:
from itertools import izip_longest as zip_longest
def snake_parts_from_camel(name):
parts = tee(name, 2)
next(parts[1])
current = []
for first, last in zip_longest(*parts):
current.append(first.lower())
if not last:
break
if last != last.lower():
yield ''.join(current)
current = []
yield ''.join(current) if current else last.lower()
def camel_to_snake(name):
return '_'.join(snake_parts_from_camel(name))
def snake_to_camel(name, init_caps=False):
snake_parts = iter(name.split('_'))
camel_parts = [next(snake_parts) if not init_caps else '']
camel_parts.extend(_.title() for _ in snake_parts)
return ''.join(camel_parts)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment