Skip to content
Related Articles

Related Articles

Python program to convert camel case string to snake case

View Discussion
Improve Article
Save Article
  • Last Updated : 01 Feb, 2021
View Discussion
Improve Article
Save Article

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

 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!