String Indexing and Slicing in Python
String Indexing and Slicing in Python
In Python, strings are sequences of characters that can be accessed using indexing and slicing operations. Here’s a comprehensive explanation with examples:
Indexing
Strings in Python are zero-indexed, meaning the first character has index 0.
python
text = "Python"
Index positions:
text
P y t h o n 0 1 2 3 4 5
Positive Indexing (left to right)
python
print(text[0]) # 'P' - first character print(text[1]) # 'y' - second character print(text[5]) # 'n' - last character
Negative Indexing (right to left)
Negative indices count from the end of the string:
text
P y t h o n -6 -5 -4 -3 -2 -1
python
print(text[-1]) # 'n' - last character print(text[-2]) # 'o' - second last character print(text[-6]) # 'P' - first character
Slicing
Slicing allows you to extract a substring using the syntax: string[start:stop:step]
Basic Slicing
python
text = "Python Programming" # Get characters from index 0 to 5 (not including 5) print(text[0:5]) # 'Pytho' # Get characters from index 7 to end print(text[7:]) # 'Programming' # Get characters from beginning to index 5 print(text[:5]) # 'Pytho' # Get the entire string print(text[:]) # 'Python Programming' # Get every second character print(text[::2]) # 'Pto rgamn'
Negative Slicing
python
# Get last 5 characters print(text[-5:]) # 'mming' # Get all characters except last 5 print(text[:-5]) # 'Python Progr' # Get characters from -10 to -5 print(text[-10:-5]) # ' Progr'
Step Parameter
python
# Reverse the string print(text[::-1]) # 'gnimmargorP nohtyP' # Get every 3rd character print(text[::3]) # 'Ph rn'
Practical Examples
- Extracting file extensions:
python
filename = "document.pdf" extension = filename[-3:] print(extension) # 'pdf'
- Getting domain from email:
python
email = "user@example.com"
domain = email[email.index('@')+1:]
print(domain) # 'example.com'
- Checking if a string is a palindrome:
python
word = "madam" is_palindrome = word == word[::-1] print(is_palindrome) # True
- Extracting parts of a date:
python
date = "2023-04-15" year = date[:4] month = date[5:7] day = date[8:] print(year, month, day) # '2023' '04' '15'
Remember that strings are immutable in Python,
1. Basic String Operations
Concatenation (+)
python
str1 = "Hello" str2 = "World" result = str1 + " " + str2 print(result) # "Hello World"
Repetition (*)
python
word = "Hi" repeated = word * 3 print(repeated) # "HiHiHi"
Length (len())
python
text = "Python" print(len(text)) # 6
in and not in Operators in Python Strings
The in and not in operators are membership operators used to check if a substring exists within a string. They return boolean values (True or False).
in Operator
Checks if a substring exists in a string.
Syntax:
python
substring in string
Examples:
python
text = "Python programming is fun"
# Check for single character
print('P' in text) # True
print('z' in text) # False
# Check for multiple characters
print('pro' in text) # True
print('gram' in text) # True
print('java' in text) # False
# Case-sensitive check
print('python' in text) # False (because of case difference)
not in Operator
Checks if a substring does not exist in a string.
Syntax:
python
substring not in string
Examples:
python
text = "Python programming is fun"
print('java' not in text) # True
print('fun' not in text) # False
print('Fun' not in text) # True (case-sensitive)
Practical Use Cases
- Input validation:
python
email = input("Enter your email: ")
if "@" not in email or "." not in email:
print("Invalid email address")
- Search functionality:
python
products = ["Python book", "Java course", "JavaScript tutorial"] search_term = "python" results = [p for p in products if search_term.lower() in p.lower()] print(results) # ['Python book']
- Conditional execution:
python
filename = "report.pdf"
if ".pdf" in filename:
print("This is a PDF file")
- Security check:
python
user_input = input("Enter comment: ")
if "script" not in user_input.lower():
print("Comment accepted")
else:
print("Potential XSS attack detected")
Important Notes
- These operations are case-sensitive:
python
print('python' in 'Python') # False
- They work with empty strings:
python
print('' in 'Python') # True (empty string is always considered present)
print('' not in 'Python') # False
- Performance: These operations are highly optimized in Python and execute very quickly even for large strings.
- For exact matching rather than substring checking, use
==instead:
python
print('python' == 'Python') # False