What is a Substring in Python: How to Extract and Create Substrings Easily

A string is a sequence of Unicode characters. It can include letters, numbers, special characters, or spaces. Strings are one of the most commonly used data types in Python because they allow you to work with textual data. In Python, strings are enclosed within single quotes (‘ ‘), double quotes (” “), or triple quotes (”’ ”’ or “”” “””).

What Is a Substring?

A substring is a contiguous sequence of characters within a string. Essentially, it is part of a larger string. Substrings can be extracted from strings in various ways, and Python offers multiple methods to work with substrings efficiently.

Importance of Substrings

Manipulating substrings is essential in many programming scenarios such as searching for keywords in text, extracting parts of a file path, parsing data, and much more. Understanding how to create and manage substrings in Python is fundamental for effective text processing.

How to Create Substrings in Python

Using String Slicing

The most popular and efficient way to create substrings in Python is through string slicing. String slicing allows you to obtain a part of a string by specifying indices.

The general syntax for slicing a string is:

string[begin:end:step]

  • Begin: The starting index of the substring. The character at this index is included in the substring. If omitted, it defaults to 0. 
  • End: The ending index of the substring. The character at this index is excluded. If omitted, it defaults to the length of the string. 
  • Step: The step determines how many characters to skip while slicing. If omitted, the default step is 1, which means every character is included. 

Examples of String Slicing

Slice from Begin to End

For example, to get a substring from index 2 to index 10 (excluding index 10):

python

CopyEdit

s = ‘substring in python’

print(s[2:10])

 

Output:

bstring

Slice from Start to a Specific Index

When the starting index is omitted, slicing starts from the beginning:

python

CopyEdit

s = ‘substring in python’

print(s[:7])

 

Output:

substri

Slice from a Specific Index to the End

When the ending index is omitted, slicing continues to the end:

python

CopyEdit

s = ‘substring in python’

print(s[1:])

 

Output:

Substring in Python

Slice with Step

You can include a step to skip characters:

python

CopyEdit

s = ‘substring in python’

print(s[2:10:2])

 

Output:

btig

This returns characters at index 2, 4, 6, and 8.

Slice the Entire String

Omitting both begin and end returns the whole string:

python

CopyEdit

s = ‘substring in python’

print(s[:])

 

Output:

Substring in Python

Accessing a Single Character

You can get a single character using its index:

python

CopyEdit

s = ‘substring in python’

print(s[1])

 

Output:

u

Negative Indexing and Slicing

Python allows negative indices for strings. Negative indices count from the end of the string backwards.

For example:

python

CopyEdit

s = ‘substring in python’

print(s[0:-3])

 

Output:

Substring in pyt

This slices from the start (index 0) to three characters before the end.

Reversing a String Using Slicing

Using a negative step allows you to reverse a string easily:

python

CopyEdit

s = ‘substring in python’

print(s[::-1])

 

Output:

nohtyp ni gnirtsbus

This returns the entire string in reverse order.

Creating Substrings Using the split() Function

The split() function divides a string into a list of substrings based on a specified delimiter (separator). By default, it splits the string by whitespace.

Example:

python

CopyEdit

s = ‘substring in python’

result = s.split()

print(result)

 

Output:

[‘substring’, ‘in’, ‘python’]

You can also split by any other character, for example, a comma:

python

CopyEdit

s = ‘apple,banana,grape’

result = s.split(‘,’)

print(result)

 

Output:

[‘apple’, ‘banana’, ‘grape’]

The split method is helpful when you want to extract multiple substrings separated by a known delimiter.

How to Check if a Substring Exists in a String

One of the common tasks when working with strings is to check whether a particular substring is present within a larger string. Python offers multiple ways to perform this check.

Using the In Operator

The simplest and most Pythonic way to check if a substring exists within a string is by using the in operator. It returns True if the substring is found, otherwise False.

Example:

python

CopyEdit

s = ‘substring in python’

if ‘python’ in s:

    print(‘Substring found’)

Else:

    print(‘Substring not found’)

 

Output:

Substring found

The in operator is case-sensitive, so ‘Python’ with an uppercase ‘P’ would not be found in this case.

Using the find() Method

Another way to check for a substring is the find() method. This method searches the string for the specified substring and returns the lowest index where the substring is found. If the substring is not found, it returns -1.

Example:

python

CopyEdit

s = ‘substring in python’

index = s.find(‘python’)

if index != -1:

    print(‘Substring found at index’, index)

Else:

    print(‘Substring not found’)

 

Output:

Substring found at index 12

This method is useful if you want to know the exact position of the substring inside the string.

Using the index() Method

The index() method works similarly to find(), but instead of returning -1 when the substring is not found, it raises a ValueError exception.

Example:

python

CopyEdit

s = ‘substring in python’

try:

    index = s.index(‘python’)

    print(‘Substring found at index’, index)

Except ValueError:

    print(‘Substring not found’)

 

This approach is useful when you want to handle the absence of a substring explicitly with error handling.

Using Regular Expressions for Substring Search

For more complex substring searches, especially patterns, Python’s re module provides powerful capabilities.

Example:

python

CopyEdit

import re

 

s = ‘substring in python’

pattern = ‘py.*n’  # matches ‘python’ or similar patterns

 

match = re.search(pattern, s)

If match:

    print(‘Substring matching pattern found:’, match.group())

Else:

    print(‘No matching substring found’)

 

Output:

Substring matching pattern found: python

Regular expressions can be customized for case-insensitive searches, multiple occurrences, and more.

Counting the Number of Occurrences of a Substring

To count how many times a substring appears in a string, Python provides the count() method.

Example:

python

CopyEdit

s = ‘This is the count of a substring in this string. Is it counting?’

count = s.count(‘is’)

print(‘Number of occurrences:’, count)

 

Output:

Number of occurrences: 3

This method counts non-overlapping occurrences of the substring.

Finding All Indexes of a Substring in a String

Python does not have a built-in method that returns all the indices where a substring appears. However, you can define a function that uses find() repeatedly to get all the starting indices.

Example function:

python

CopyEdit

def find_all_indexes(string, substring):

    indexes = []

    start = 0

    While True:

        Index = string.find(substring, start)

        if index == -1:

            break

        indexes.append(index)

        start = index + 1

    return indexes

 

s = ‘substring in python substring example’

indexes = find_all_indexes(s, ‘substring’)

print(‘Indexes:’, indexes)

 

Output:

Indexes: [0, 19]

This function works by searching from the last found index plus one until no more occurrences are found.

Extracting Substrings Based on Conditions

Sometimes, you want to extract substrings dynamically based on certain conditions, such as the position of delimiters or keywords.

Extract Substring Before a Specific Character

To get the substring before a particular character, you can use the find() method to locate the character and then slice accordingly.

Example:

python

CopyEdit

s = ‘user@example.com’

index = s.find(‘@’)

if index != -1:

    username = s[:index]

    print(‘Username:’, username)

 

Output:

Username: user

Extract Substring After a Specific Character

Similarly, to get the substring after a specific character:

python

CopyEdit

s = ‘user@example.com’

index = s.find(‘@’)

if index != -1:

    domain = s[index+1:]

    print(‘Domain:’, domain)

 

Output:

Domain: example.com

Extract Substring Between Two Characters

If you want to extract a substring between two known characters or substrings, use find() for both and slice accordingly.

Example:

python

CopyEdit

s = ‘Hello [Python] World’

start = s.find(‘[‘)

end = s.find(‘]’)

if start != -1 and end != -1 and start < end:

    substring = s[start+1:end]

    print(‘Substring:’, substring)

 

Output:

Substring: Python

This technique is useful for parsing strings with specific formatting.

Advanced Substring Extraction Using partition() and rpartition()

Python strings provide the partition() method, which splits a string into three parts based on the first occurrence of a separator: the part before, the separator itself, and the part after.

Example:

python

CopyEdit

s = ‘key:value:extra’

before, sep, after = s.partition(‘:’)

print(‘Before:’, before)

print(‘Separator:’, sep)

print(‘After:’, after)

 

Output:

vbnet

CopyEdit

Before: key

Separator: :

After: value: extra

 

rpartition() works similarly but splits based on the last occurrence of the separator.

Example:

python

CopyEdit

s = ‘key:value:extra’

before, sep, after = s.rpartition(‘:’)

print(‘Before:’, before)

print(‘Separator:’, sep)

print(‘After:’, after)

 

Output:

vbnet

CopyEdit

Before: key: value

Separator: :

After: extra

 

These methods are handy when you need to extract substrings around known separators.

Extracting Substrings Using List Comprehensions and Loops

When working with multiple substrings or repeated extraction, you can combine substring methods with loops or comprehensions.

Example: Extract all words starting with a specific letter

python

CopyEdit

s = ‘apple banana apricot berry avocado’

words = s.split()

a_words = [word for word in words if word.startswith(a’)]

print(a_words)

 

Output:

[‘apple’, ‘apricot’, ‘avocado’]

This approach helps filter substrings based on criteria.

Handling Substrings with Unicode and Special Characters

Python strings fully support Unicode, so substrings can include special characters, emojis, or accented letters.

Example:

python

CopyEdit

s = ‘café naïve résumé’

print(s[0:4])  # prints ‘café’

print(s[5:10]) # prints ‘naïve’

 

Slicing works the same regardless of character type, but it is important to remember Python strings are sequences of Unicode characters.

Using String Methods to Transform Substrings

Substrings can be transformed before or after extraction using built-in string methods.

Example:

python

CopyEdit

s = ‘Hello World’

substring = s[6:]

print(substring.lower())  # prints ‘world’

print(substring.upper())  # prints ‘WORLD’

print(substring.capitalize())  # prints ‘World’

 

This flexibility allows you to process substrings as needed.

Summary of Substring Searching and Extraction Techniques

  • Use the in operator for simple presence checks. 
  • Use find() or index() to locate substrings and their positions. 
  • Use count() to find the number of occurrences. 
  • Use loops with find() to get all indexes. 
  • Use slicing (string[begin:end: step]) to extract substrings. 
  • Use split(), partition(), and rpartition() to extract substrings based on delimiters. 
  • Use regular expressions (re module) for pattern matching and complex searches. 
  • Handle Unicode strings carefully, as slicing works on characters, not bytes. 
  • Use string methods like lower(), upper(), and capitalize() to transform substrings. 

Extracting Substrings Using List Slicing: Detailed Examples

Understanding how to extract substrings effectively is crucial in Python programming. List slicing offers a powerful way to access portions of a string, with control over start, end, and step parameters.

Creating Substrings from the Beginning or End of a String

Slicing can help you extract parts of a string either from the start or towards the end.

Example:

python

CopyEdit

string = ‘substring in python’

 

# Substring from beginning up to index 2 (excluding index 2)

start = string[:2]  

print(“Substring from start:”, start)

 

# Substring from index 3 to end

end = string[3:]    

print(“Substring from index 3 to end:”, end)

 

Output:

pgsql

CopyEdit

Substring from start: su

Substring from index 3 to end: string in Python

 

In this example, the first slice extracts the first two characters, while the second slice extracts everything after the third character.

Extracting Substrings with Step Size (Skipping Characters)

You can use the step parameter in slicing to skip characters at defined intervals.

Example:

python

CopyEdit

string = ‘substring in python’

 

# Taking every second character

alt = string[::2]

print(“Every second character:”, alt)

 

# Taking every third character

gap = string[::3]

print(“Every third character:”, gap)

 

Output:

sql

CopyEdit

Every second character: sbsrn npto

Every third character: srinyo

 

This technique is useful when you want to sample characters at regular intervals.

Extracting Substrings from the Middle of a String with Steps

You can combine start, end, and step parameters to extract substrings from specific portions with intervals.

Example:

python

CopyEdit

string = ‘substring in python’

 

# Extract characters from index 2 to 10, skipping every other character

astring = string[2:11:2]

print(“Substring with step:”, astring)

 

Output:

vbnet

CopyEdit

Substring with step: btig

 

This slices characters starting from index 2 up to 10 (exclusive), taking every 2nd character.

Negative Indexing and Negative Step Slicing

Understanding Negative Indices

Python allows negative indices, which count from the end of the string backwards. The last character is at index -1, the second last at -2, and so on.

Example:

python

CopyEdit

string = ‘substring in python’

 

# Last character

print(string[-1])

 

# Second last character

print(string[-2])

 

Output:

nginx

CopyEdit

n

o

 

Slicing with Negative Indices

You can combine negative indices with slicing to extract substrings towards the end.

Example:

python

CopyEdit

string = ‘substring in python’

 

# From start to three characters before the end

print(string[0:-3])

 

# Last five characters

print(string[-5:])

 

Output:

nginx

CopyEdit

substring in pyt

ython

 

Reversing Strings Using Negative Step

Reversing a string is simple using slicing with a negative step.

Example:

python

CopyEdit

string = ‘substring in python’

 

# Reverse the entire string

print(string[::-1])

 

Output:

nginx

CopyEdit

nohtyp ni gnirtsbus

 

This technique is widely used for palindrome checks and other reverse operations.

Using Built-in String Functions to Manipulate Substrings

Splitting Strings into Substrings

The split() method divides a string into a list of substrings based on a delimiter.

Example:

python

CopyEdit

string = ‘apple,banana,grape’

 

# Splitting by comma

fruits = string.split(‘,’)

print(fruits)

 

Output:

css

CopyEdit

[‘apple’, ‘banana’, ‘grape’]

 

If no delimiter is specified, it splits by any whitespace.

Joining Substrings into a String

The join() method combines a list of substrings into a single string with a specified separator.

Example:

python

CopyEdit

words = [‘Python’, ‘is’, ‘awesome’]

sentence = ‘ ‘.join(words)

print(sentence)

 

Output:

csharp

CopyEdit

Python is awesome

 

Replacing Substrings

The replace() method replaces occurrences of a substring with another substring.

Example:

python

CopyEdit

text = ‘I love Python programming’

 

# Replace ‘Python’ with ‘Java’

new_text = text.replace(‘Python’, ‘Java’)

print(new_text)

 

Output:

css

CopyEdit

I love Java programming.

 

Finding Substrings with find() and rfind()

The find() method locates the first occurrence, and rfind() locates the last occurrence of a substring.

Example:

python

CopyEdit

text = ‘This is a test string for testing’

 

print(text.find(‘test’))   # First occurrence

print(text.rfind(‘test’))  # Last occurrence

 

Output:

CopyEdit

10

25

 

Searching for Substrings Using Regular Expressions

The re module in Python provides support for regular expressions, allowing for powerful pattern-based substring searches.

Basic Pattern Matching

Example:

python

CopyEdit

import re

 

text = ‘My phone number is 123-456-7890’

 

pattern = r’\d{3}-\d{3}-\d{4}’

match = re.search(pattern, text)

 

If match:

    print(“Phone number found:”, match.group())

Else:

    print(“Phone number not found”)

 

Output:

typescript

CopyEdit

Phone number found: 123-456-7890

 

Finding All Occurrences

re.findall() returns all matches of a pattern as a list.

Example:

python

CopyEdit

text = ‘cat bat rat cat bat’

 

matches = re.findall(r’cat’, text)

print(“Occurrences of ‘cat’:”, matches)

 

Output:

nginx

CopyEdit

Occurrences of ‘cat’: [‘cat’, ‘cat’]

 

Using Regular Expressions for Complex Substring Extraction

Example: Extracting email addresses from a string

python

CopyEdit

text = ‘Contact us at support@example.com or sales@example.org’

 

emails = re.findall(r’\S+@\S+\.\S+’, text)

print(“Emails found:”, emails)

 

Output:

nginx

CopyEdit

Emails found: [‘support@example.com’, ‘sales@example.org’]

 

Advanced String Manipulations for Substring Processing

Using startswith() and endswith() Methods

These methods check if a string starts or ends with a specified substring.

Example:

python

CopyEdit

text = ‘hello world’

 

print(text.startswith(‘hello’))  # True

print(text.endswith(‘world’))    # True

 

These are useful for filtering or validating substrings.

Case-Insensitive Substring Checks

You can perform case-insensitive searches by converting both strings to lower or upper case.

Example:

python

CopyEdit

text = ‘Python Programming’

 

If ‘python’ is in the text.lower():

    print(‘Substring found (case-insensitive)’)

 

Output:

java

CopyEdit

Substring found (case-insensitive)

 

Trimming and Cleaning Substrings

The strip(), lstrip(), and rstrip() methods remove whitespace or specified characters from the ends of a string.

Example:

python

CopyEdit

text = ‘  hello world  ‘

 

print(text.strip())   # ‘hello world’

print(text.lstrip())  # ‘hello world  ‘

print(text.rstrip())  # ‘  hello world’

 

Practical Examples of Substring Usage

Extracting Domain Names from URLs

You can extract domains from URLs using string methods or regular expressions.

Example with string methods:

python

CopyEdit

url = ‘https://www.example.com/path/to/page’

 

# Remove protocol

domain_with_path = url.split(‘//’)[1]

 

# Extract domain only

domain = domain_with_path.split(‘/’)[0]

print(‘Domain:’, domain)

 

Output:

makefile

CopyEdit

Domain: www.example.com

 

Extracting File Extensions

You can get file extensions by slicing based on the last dot.

Example:

python

CopyEdit

filename = ‘document.pdf’

 

extension = filename[filename.rfind(‘.’)+1:]

print(‘Extension:’, extension)

 

Output:

makefile

CopyEdit

Extension: PDF

 

Extracting Substrings from Log Files

Extract timestamps, error codes, or messages by slicing or using regex in logs.

Example:

python

CopyEdit

log = ‘2025-05-30 12:00:00 ERROR Something went wrong’

 

# Extract timestamp (first 19 characters)

timestamp = log[:19]

print(‘Timestamp:’, timestamp)

 

# Extract error level

error_level = log[20:25].strip()

print(‘Error level:’, error_level)

 

Output:

vbnet

CopyEdit

Timestamp: 2025-05-30 12:00:00

Error level: ERROR

 

Performance Considerations When Working with Substrings

Efficiency of String Slicing

String slicing in Python is very efficient because it returns a view or a new string without modifying the original string.

Avoiding Unnecessary Copies

Repeated slicing and concatenation can cause overhead. Using string methods like join() for concatenation is recommended.

Using Generators and Iterators for Large Strings

When processing large strings or many substrings, use generators or iterators to avoid memory overload.

Example:

python

CopyEdit

def find_substrings(string, substring):

    start = 0

    While True:

        Pos = string.find(substring, start)

        if pos == -1:

            break

        yield pos

        start = pos + 1

 

s = ‘substring in python substring example’

for index in find_substrings(s, ‘substring’):

    print(‘Found at:’, index)

 

Handling Substrings in Real-World Applications

Parsing Data Files and Text Processing

In many real-world scenarios, data is stored as text files where extracting meaningful substrings is necessary. For example, when parsing CSV or log files, you often need to extract fields or keywords.

Example: Extracting specific columns from a CSV line

python

CopyEdit

line = “John,Doe,30,New York,Engineer”

 

# Split by comma to get individual fields: fields = line.split(‘,’)

 

# Extract first name and city

first_name = fields[0]

city = fields[3]

 

print(f”Name: {first_name}, City: {city}”)

 

Output:

vbnet

CopyEdit

Name: John, City: New York

 

This technique can be extended to complex file formats by combining slicing and splitting.

Extracting Substrings from JSON or XML Data

When handling structured data formats like JSON or XML as strings, substring extraction can help parse or clean data.

Example: Extract a value from a JSON string

python

CopyEdit

import json

 

json_string = ‘{“name”: “Alice”, “age”: 25, “city”: “Paris”}’

 

# Parse JSON string into dictionary

data = json.loads(json_string)

 

# Extract name substring

name = data[‘name’]

 

print(f”Name: {name}”)

 

Output:

makefile

CopyEdit

Name: Alice

 

While this example uses JSON parsing libraries, sometimes you might need substring extraction for quick data retrieval or pre-processing.

Extracting Information from User Input or Logs

In applications such as chatbots, data extraction from user input is often necessary.

Example: Extract command and arguments from user input

python

CopyEdit

user_input = “/send_message Hello, how are you?”

 

# Extract command and message

command = user_input.split(‘ ‘)[0]

message = user_input[len(command)+1:]

 

print(f”Command: {command}”)

print(f”Message: {message}”)

 

Output:

makefile

CopyEdit

Command: /send_message

Message: Hello, how are you?

 

Substring Manipulation in Data Cleaning and Validation

Removing Unwanted Characters

Often, you need to clean substrings by removing unwanted whitespace or special characters.

Example:

python

CopyEdit

raw_input = ”  user@example.com \n”

 

cleaned_input = raw_input.strip()

print(f”Cleaned input: ‘{cleaned_input}'”)

 

Output:

nginx

CopyEdit

Cleaned input: ‘user@example.com’

 

Validating Substring Formats

Validating emails, phone numbers, or other formats frequently uses substring extraction combined with pattern matching.

Example: Simple email validation using substring checks

python

CopyEdit

email = “user@example.com”

 

if ‘@’ in email and ‘.’ in email.split(‘@’)[-1]:

    print(“Valid email format”)

Else:

    print(“Invalid email format”)

 

Output:

pgsql

CopyEdit

Valid email format

 

This method is basic; regular expressions provide more thorough validation.

Optimizing Substring Operations in Large-Scale Applications

Using Efficient String Libraries

For large-scale applications or performance-critical tasks, libraries like re (for regex), or third-party libraries like regex or pyahocorasick can optimize substring searching.

Avoiding Unnecessary String Copies

Strings in Python are immutable, so every slicing operation creates a new string. Avoid slicing inside large loops unnecessarily.

Example of inefficiency:

python

CopyEdit

for i in range(len(s)):

    substr = s[i:i+5]  # creates new string each iteration

    # process substr

 

Where possible, consider processing the string in chunks or using iterators.

Using Memoryview for Byte Strings

If working with byte strings, memoryview can be used to avoid copying when slicing.

Example:

python

CopyEdit

data = b” substring in python”

mv = memoryview(data)

 

# Extract substring as a memoryview slice

substr_mv = mv[0:9]

 

# Convert back to bytes or string as needed

substr = substr_mv.tobytes().decode(‘utf-8’)

print(substr)

 

Output:

nginx

CopyEdit

substring

 

Advanced String Searching Techniques

Finding All Occurrences of a Substring

Using a custom function, you can find all indices of a substring inside a string.

python

CopyEdit

def find_all_indexes(string, substring):

    start = 0

    indexes = []

    While True:

        Index = string.find(substring, start)

        if index == -1:

            break

        indexes.append(index)

        start = index + 1

    return indexes

 

s = “substring in python substring example”

result = find_all_indexes(s, “substring”)

print(“Found at positions:”, result)

 

Output:

less

CopyEdit

Found at positions: [0, 20]

 

This function is useful when multiple instances of a substring are expected.

Using str.index() vs str.find()

Both methods locate substrings, but index() raises an error if the substring is not found, whereas find() returns -1.

Example:

python

CopyEdit

s = “hello world”

 

print(s.find(“world”))  # 6

print(s.find(“python”)) # -1

 

print(s.index(“world”))  # 6

# print(s.index(“python”))  # Raises ValueError

 

Use find() when you want to safely check presence without exceptions.

Combining Substrings for Dynamic String Building

Concatenating Substrings

Concatenation builds larger strings from smaller substrings using the + operator or the join().

Example:

python

CopyEdit

first = “Hello”

second = “World”

 

combined = first + ” ” + second

print(combined)

 

Output:

nginx

CopyEdit

Hello World

 

For joining multiple substrings, join() is more efficient.

Formatting Strings with Substrings

Python’s f-strings or format() allow dynamic insertion of substrings.

Example:

python

CopyEdit

name = “Alice”

age = 30

 

sentence = f”My name is {name} and I am {age} years old.”

print(sentence)

 

Output:

pgsql

CopyEdit

My name is Alice and I am 30 years old.

 

This is useful for constructing messages dynamically.

Practical Tips for Substring Handling in Python

  • Always handle edge cases such as empty strings or invalid indices. 
  • Use slicing with caution on Unicode strings where characters might be multibyte. 
  • Consider the immutability of strings in Python when planning substring manipulations. 
  • When working with very large strings, consider memory and performance impacts. 
  • Use built-in string methods and libraries whenever possible for better readability and performance. 
  • Test substring operations thoroughly, especially with user-generated data. 

Summary: Mastering Substrings in Python

Working with substrings is an essential skill for Python developers. From simple slicing to advanced regex-based extraction, understanding how to manipulate and search within strings enables a wide variety of programming tasks such as data processing, text analysis, and user input handling.

Key takeaways include:

  • Slicing syntax and semantics for extracting substrings. 
  • Using string methods like split(), join(), find(), count(). 
  • Handling negative indices and steps for flexible substring manipulation. 
  • Utilizing regular expressions for pattern-based substring matching. 
  • Optimizing performance when working with large strings or complex operations. 
  • Real-world applications like parsing files, cleaning data, and formatting output. 

With these tools and concepts, you can confidently handle any substring-related requirement in Python programming.

 

img