Skip to main content

Python String Operations

Python provides powerful string manipulation capabilities. These utilities cover common text processing tasks from case conversion to URL-friendly slug generation.

Case Conversion

Capitalize First Letter

Capitalize the first letter of a string:
def capitalize(s, lower_rest = False):
  return ''.join([s[:1].upper(), (s[1:].lower() if lower_rest else s[1:])])

capitalize('fooBar') # 'FooBar'
capitalize('fooBar', True) # 'Foobar'

Decapitalize First Letter

Lowercase the first letter:
def decapitalize(s, upper_rest = False):
  return ''.join([s[:1].lower(), (s[1:].upper() if upper_rest else s[1:])])

decapitalize('FooBar') # 'fooBar'
decapitalize('FooBar', True) # 'fOOBAR'

Capitalize Every Word

Capitalize the first letter of each word:
def capitalize_every_word(s):
  return s.title()

capitalize_every_word('hello world!') # 'Hello World!'

Convert to Different Cases

Camel Case

Convert strings to camelCase:
from re import sub

def camel(s):
  s = sub(r"(_|-)+", " ", s).title().replace(" ", "")
  return ''.join([s[0].lower(), s[1:]])

camel('some_database_field_name') # 'someDatabaseFieldName'
camel('Some label that needs to be camelized')
# 'someLabelThatNeedsToBeCamelized'
camel('some-javascript-property') # 'someJavascriptProperty'
camel('some-mixed_string with spaces_underscores-and-hyphens')
# 'someMixedStringWithSpacesUnderscoresAndHyphens'

Kebab Case

Convert strings to kebab-case:
from re import sub

def kebab(s):
  return '-'.join(
    sub(r"(\s|_|-)+"," ",
    sub(r"[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+",
    lambda mo: ' ' + mo.group(0).lower(), s)).split())

kebab('camelCase') # 'camel-case'
kebab('some text') # 'some-text'
kebab('some-mixed_string With spaces_underscores-and-hyphens')
# 'some-mixed-string-with-spaces-underscores-and-hyphens'
kebab('AllThe-small Things') # 'all-the-small-things'

Snake Case

Convert strings to snake_case:
from re import sub

def snake(s):
  return '_'.join(
    sub('([A-Z][a-z]+)', r' \1',
    sub('([A-Z]+)', r' \1',
    s.replace('-', ' '))).split()).lower()

snake('camelCase') # 'camel_case'
snake('some text') # 'some_text'
snake('some-mixed_string With spaces_underscores-and-hyphens')
# 'some_mixed_string_with_spaces_underscores_and_hyphens'
snake('AllThe-small Things') # 'all_the_small_things'

URL-Friendly Slugs

Convert any string to a URL-friendly slug:
from re import sub

def slugify(s):
  s = s.lower().strip()
  s = sub(r'[^\w\s-]', '', s)
  s = sub(r'[\s_-]+', '-', s)
  s = sub(r'^-+|-+$', '', s)
  return s

slugify('Hello World!') # 'hello-world'

Trim Whitespace

Remove Leading and Trailing Whitespace

'  Hello  '.strip()    # 'Hello'

Remove Leading Whitespace

'  Hello  '.lstrip()   # 'Hello  '

Remove Trailing Whitespace

'  Hello  '.rstrip()   # '  Hello'

Practical Use Cases

Generate Database Field Names

label = "User's Full Name"
field_name = snake(label)  # 'user_s_full_name'

Create URL Slugs from Titles

title = "10 Tips for Better Python Code!"
url_slug = slugify(title)  # '10-tips-for-better-python-code'

Format API Keys

api_response = "some-api-field"
python_var = snake(api_response)  # 'some_api_field'

Clean User Input

user_input = "  John Doe  \n"
cleaned = user_input.strip()  # 'John Doe'

Convert Between Naming Conventions

javascript_var = "userName"
python_var = snake(javascript_var)  # 'user_name'

python_var = "user_name"
javascript_var = camel(python_var)  # 'userName'

Next Steps

Lists

Learn about list operations

Math

Explore mathematical utilities

Build docs developers (and LLMs) love