Skip to content
Related Articles

Related Articles

Improve Article
Python program to convert camel case string to snake case
  • Last Updated : 01 Feb, 2021

Given a string in camel case, write a Python program to convert the given string from camel case to snake case.
Examples: 

Input : GeeksForGeeks
Output : geeks_for_geeks

Input : ThisIsInCamelCase
Output : this_is_in_camel_case

Let’s see the different ways we can do this task. 
Method #1 : Naive Approach
This is a naive implementation to convert camel case to snake case. First, we initialize a variable ‘res’ with an empty list and append first character (in lower case) to it. Now, Each time we encounter a Capital alphabet, we append ‘_’ and the alphabet (in lower case) to ‘res’, otherwise, just append the alphabet only.  

Python3




# Python3 program to convert string
# from camel case to snake case
 
def change_case(str):
    res = [str[0].lower()]
    for c in str[1:]:
        if c in ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
            res.append('_')
            res.append(c.lower())
        else:
            res.append(c)
     
    return ''.join(res)
     
# Driver code
str = "GeeksForGeeks"
print(change_case(str))
Output: 
geeks_for_geeks

 

  
Method #2 : List comprehension

Python3




# Python3 program to convert string
# from camel case to snake case
 
def change_case(str):
     
    return ''.join(['_'+i.lower() if i.isupper()
               else i for i in str]).lstrip('_')
     
# Driver code
str = "GeeksForGeeks"
print(change_case(str))
Output: 



geeks_for_geeks

 

  
Method #3 : Python reduce()
Python reduce() method applies a function to all the string alphabets, that wherever it find uppercase alphabet, it add ‘_’ in front of it and replace the uppercase alphabet with lowercase alphabet. 

Python3




# Python3 program to convert string
# from camel case to snake case
from functools import reduce
 
def change_case(str):
     
    return reduce(lambda x, y: x + ('_' if y.isupper() else '') + y, str).lower()
     
# Driver code
str = "GeeksForGeeks"
print(change_case(str))
Output: 
geeks_for_geeks

 

  
Method #4 : Python Regex 

Python3




# Python3 program to convert string
# from camel case to snake case
import re
 
def change_case(str):
    s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', str)
    return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()
     
# Driver code
str = "GeeksForGeeks"
print(change_case(str))
Output: 
geeks_for_geeks

 

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :