Lab 03: Strings & String Methods

🎯 Objective

Master Python string manipulation — slicing, searching, formatting, and transformation — the tools you'll use in almost every Python program.

📚 Background

Strings in Python are immutable sequences of Unicode characters. Python ships with 40+ built-in string methods — more than any other language. You'll use strings constantly: reading files, calling APIs, parsing user input, building reports. Mastering strings makes everything else faster.

⏱️ Estimated Time

30 minutes

📋 Prerequisites

  • Lab 2: Variables, Data Types & Type Conversion

🛠️ Tools Used

  • Python 3.12

🔬 Lab Instructions

Step 1: String Creation Styles

Python gives you four ways to create strings. Each has its place.

📸 Verified Output:

💡 Raw strings (r"...") treat backslashes as literal characters — essential for Windows file paths, regular expressions, and LaTeX strings. Otherwise \n would be a newline, \t a tab, etc.

Step 2: Indexing and Slicing

Strings are sequences — every character has a position. Python supports negative indexing (counting from the end).

📸 Verified Output:

💡 Slicing syntax: s[start:stop:step]. Omitting start defaults to 0, omitting stop defaults to end. s[::-1] is the classic Python idiom for reversing a string.

Step 3: Essential String Methods

📸 Verified Output:

Step 4: Finding and Searching

📸 Verified Output:

💡 Prefer find() when not finding is a valid outcome (no crash). Use index() when the string must contain the substring (fail fast). Use in for simple boolean checks.

Step 5: Split and Join

These two methods together handle 90% of string parsing tasks.

📸 Verified Output:

Step 6: F-String Formatting (Modern Standard)

F-strings (Python 3.6+) are the fastest and most readable string formatting method.

📸 Verified Output:

Step 7: String Validation Methods

Essential for form validation, data cleaning, and input sanitization.

📸 Verified Output:

Step 8: Real-World String Pipeline

Parse and clean messy real-world data.

📸 Verified Output:

💡 This pattern — split(), strip(), title()/lower() — is the foundation of data cleaning in Python. Real-world data is always messy; these methods tame it.

✅ Verification

Expected output:

🚨 Common Mistakes

  1. String mutation: s[0] = 'X' raises TypeError — strings are immutable; create new strings instead.

  2. find() vs index(): find() returns -1 for not found; index() raises ValueError — know which you need.

  3. Forgetting strip(): "hello " != "hello" — always strip user input before comparing.

  4. Using + in loops: result += s in a loop is O(n²) — always use "".join(list).

  5. Case-sensitive search: "Hello".find("hello") returns -1 — use .lower() before searching.

📝 Summary

  • Strings are immutable Unicode sequences — methods always return NEW strings

  • Slicing: s[start:stop:step] — negative indices count from the end backwards

  • Key methods: strip(), split(), join(), replace(), find(), upper(), lower(), title()

  • f-strings f"{value:format}" are the modern standard — fastest and most readable

  • Always use "sep".join(list) not + concatenation in loops for performance

🔗 Further Reading

Last updated