Python string methods are the workhorses of data processing — and knowing the right one for each task saves dozens of lines of regex. split, join, strip, startswith, endswith, find, replace, encode, format — this guide covers every method that matters with production examples.
⚡ TL;DR: split/join for delimiter-separated data. strip/lstrip/rstrip for whitespace. startswith/endswith for prefix/suffix checks. find/index for position. replace for substitution. format and f-strings for templating. encode/decode for byte conversion.
Split, join, and partition
# split: split on delimiter
'hello world foo'.split() # ['hello','world','foo']
'a,b,c'.split(',') # ['a','b','c']
'a,b,c'.split(',',1) # ['a','b,c'] — maxsplit=1
# join: combine with separator
', '.join(['Alice','Bob','Carol']) # 'Alice, Bob, Carol'
'\n'.join(lines) # Join with newline
# partition: split at first delimiter, always 3-tuple
'user@example.com'.partition('@') # ('user','@','example.com')
# rsplit: split from right
'a/b/c/d'.rsplit('/',1) # ['a/b/c','d'] — last segment
Strip and clean
s = ' hello world \n'
s.strip() # 'hello world' — both ends
s.lstrip() # 'hello world \n' — left only
s.rstrip() # ' hello world' — right only
# Strip specific chars:
'***hello***'.strip('*') # 'hello'
'0001234'.lstrip('0') # '1234'
# removeprefix / removesuffix (Python 3.9+)
'test_value'.removeprefix('test_') # 'value'
'index.html'.removesuffix('.html') # 'index'
Search and replace
s = 'Hello World Hello'
s.find('Hello') # 0 — first position (-1 if not found)
s.rfind('Hello') # 12 — last position
s.count('Hello') # 2
s.index('World') # 6 (raises ValueError if not found)
s.replace('Hello','Hi') # 'Hi World Hi'
s.replace('Hello','Hi',1) # 'Hi World Hello' — max 1 replacement
# Case methods:
s.lower() # 'hello world hello'
s.upper() # 'HELLO WORLD HELLO'
s.title() # 'Hello World Hello'
s.swapcase() # 'hELLO wORLD hELLO'
s.capitalize() # 'Hello world hello'
Format and template
name='Alice'; age=30; score=95.678
# f-strings (fastest, clearest — use this):
f'Name: {name}, Age: {age}, Score: {score:.1f}'
# 'Name: Alice, Age: 30, Score: 95.7'
# Format specifiers:
f'{score:>10.2f}' # ' 95.68' right-align, width 10
f'{1234567:,}' # '1,234,567' comma separator
f'{255:#010x}' # '0x000000ff' hex with padding
f'{0.25:.0%}' # '25%' percentage
# Multi-line f-string:
message = (
f'Dear {name},\n'
f'Your score of {score:.1f} is excellent!\n'
f'Regards, Admin'
)
- ✅ join() is always faster than string += in loops
- ✅ strip() for all whitespace, removesuffix/prefix for specific chars
- ✅ f-strings for formatting — fastest and most readable
- ✅ find() returns -1 for missing; index() raises ValueError
- ❌ Never use + to build strings in loops — O(n²)
- ❌ Don’t use format() when f-strings do the same thing
External reference: Python string methods docs.
Recommended Reading
→ Designing Data-Intensive Applications — The bible of distributed systems and production engineering at scale.
→ The Pragmatic Programmer — Timeless engineering wisdom every senior developer needs.
Affiliate links. We earn a small commission at no extra cost to you.
Free Weekly Newsletter
🚀 Join 2,000+ Senior Developers
Get expert-level JavaScript, Python, AWS, system design and AI secrets every week. Zero fluff, pure signal.
Discover more from CheatCoders
Subscribe to get the latest posts sent to your email.
