Python Strings (with Examples)

Strings in Python are stored as a str data type. A Python string is a sequence of characters enclosed in single or double quotes.

  • Single-quote: 'hello'
  • Double-quote: "hello"
Navigation Show

What is a Python String

A String, in Python Programming, is represented by the string class “str“. String literals represent a sequence of characters (string value) enclosed in quotes inside a Python program.

The University of California, Berkley mentions that the Python string type are inherently in the Unicode Standard, composed of 109K characters, which means they can represent characters beyond the ASCII range of 128 characters.

Subscribe to my Newsletter

According to the Python foundation, Python strings are immutable (cannot be changed after creation). Since they can’t be changed, we generally use string construction to create new strings. Strings in Python allow escaping special characters with a backslash. The escape characters, or escape sequences, represent reserved characters in strings, such as the line break for instance (e.g. \n in 'This is a \nline break' ).

Based on the UCSB College of Engineering, Python strings allow simple indexing, slicing, assignment and formatting, while providing built-in string operation methods to operate on the string object.

A Python string data type (str) should not be confused with the string module in Python which provides additional constants and classes for string-related operations. Google for Education program even mentions that you should not to use the string module.

Characteristics of Python Strings

Python strings have multiple characteristics:

  • Immutable: String cannot be changed after creation.
  • Sequence Type: Represents sequences of characters with indexing.
  • Must be Enclosed in Quotes: Single, double, or triple quotes.
  • Supports Unicode characters: Character encoding standard
  • Allows Escaping Special Characters.
  • Supports sequence operations
  • Variable Length

Examples of Python Strings

Examples of Python strings vary with quotes, lines, nesting, and variable use. Here are a few examples of Python strings and string initialization:

  • Single-quote strings: 'single'
  • Double-quote strings: "double"
  • Triple-quote strings: '''triple single-quote''' or """triple double-quote"""
  • F-strings: f"my name is {name}, {last_name}"
  • Format Strings: "my name is {0}, {1}".format("JC","Chouinard")
  • % string: "My name is %s, %s and I am %d years old" % ('JC', 'Chouinard', 33)
  • Raw Strings: r'Raw string with backslashes treated literally: \n \t'
  • Byte Strings: b'Byte string of binary data: \x48\x65\x6c\x6c\x6f'

Print a Python String

To print a string in Python, pass the string as an argument of the print() function.


Assign a String to Variable

Use the equal operator (=) to assign a string to a Python variable.

# String Assignment
var = 'hello'

Multiline Strings in Python

Multiline strings can be done with the single-quote or the double-quote notation. We need to triple the number of quotes in order to make multi-line strings.

# Use triple quotes to assign multiline
x = '''
I am 
# Can also use double-quotes
x = """
I am 

Nested Strings in Python

Nested strings contain quote symbols (‘ or “) in Python. Nested strings can happen when a quotation is encapsulated inside a string.

How to Double-Nest Strings in Python

In order to create nested strings in Python you need to use different quotation symbol for the quotation than the one used to define the string. (e.g. using single-quote inside the double-quote).

Although it is possible to use double-quotes inside single quotes, the standard is to use single-quotes inside double-quotes. The important is to be consistent.

# Nested Strings
x = """
My friend said: 
'hey, listen to me'

How to Triple-Nest Strings in Python

The preferred format for nested strings is to have double quotes > single quote > backtick with the backtick being the most nested and the double quote being the outer string assignment.

# Triple Nest
x = """
My friend said: 
'hey, listen to what this guy told me. He said:
`it is possible to triple-nest strings in Python!`.
What a dumb idea...'.
What a jerk!

Indexing of Strings

A string in Python is an Array, which allows for string indexing.

An array in Python is when you can have multiple items in a single variable.

Thus, it is possible to select each item of the array (string) individually using its index.

Selecting First Letter of a String

Python is using zero-based indexing (starts at 0).

# Selecting first letter of a string
x = 'python'

Selecting Last Letter of a String

To select the last letter of a string, we use the minus symbol.

# Selecting last letter of a string
x = 'python'

Looping Through a String in Python

For loops can be used to loop through any types of arrays, including strings.

# looping
for i in 'python':

Slicing Strings in Python

Slicing a string in Python is when you want to select a part of the string array (e.g. the substring).

How to Get a Part of a String Using the Indexes

It is possible to use the slice syntax to get a sub-part of the string sequence (string slice). String slicing is done by calling the string with square bracket (s[start:end]) where elements included begin at start, up to, but not including, the end.

# Get part of string
x = 'Slice me like a cake'
# 4 is excluded

How to Slice a String from the Start

To slice a string until an index, use the colon notation up to an position. The position chosen is excluded.

In the example below, I am slicing from index 0 until the index 9, 9 excluded.

Adding no number before the colon is implied that you are starting from index 0.

# Slice from the start
x = 'Slice me like a cake'
Slice me 

How to Slice String from Index to the End

Similarly, adding no number after the colon makes it implicit that you want to slice until the end.

This time, the number 9 (index before the colon) is included.

# Slice from index to the end
x = 'Slice me like a cake'
like a cake

Negative Slicing of Strings

# Negative slicing
x = 'Slice me like a cake'
Slice me like a cak

Find How Long a String is in Python

Use the len() function to find how long a string is in Python.

# How long is a string
x = 'How long is this string'

How to Count Letters in a String

# String to variable
x = 'How long is this string'

# count the number of 's' in the string

Check if a String Contains Another String

# String to variable
x = 'How long is this string'

# Does the string contain the word "long"
if 'long' in x.lower():
    print('yes, it is') 
    print('no, it is not')

Change the Casing of Strings in Python

We can modify strings in many ways in Python. One of such ways is to modify casing of the string.

How to Convert a String to Uppercase

# Lower Case
x = 'Convert casing of this string'

# Uppercase
new_x = x.upper()


How to Convert a String to Lowercase

# Lower Case
x = 'Convert casing of this string'

# Lowercase
new_x = x.lower()

convert casing of this string

How to Convert a String to Titlecase

# Title Case
x = 'Convert casing of this string'

# Titlecase
new_x = x.title()

Convert Casing Of This String

Remove Whitespaces in Strings

Remove Spaces Before and After a String (Leading and Trailing)

The strip() method removes leading and trailing spaces in strings, but not the spaces between the words.

# Remove Spaces Before and after
x = '   Replace leading and trailing spaces from this string    '

Replace leading and trailing spaces from this string

Remove all Whitespaces in a String

Remove whitespaces using the replace() method.

# Remove all whitespaces
x = '   Replace whitespaces from this string    '

x.replace(' ', '')

Replacing Letters from Strings

How to Replace a Single Letter inside a String

# Replace the letter e
x = 'Replace the letter e'

x.replace('e', 'f')
Rfplacf thf lfttfr f

How to Replace the First Occurrence of a Letter in String

# Replace the letter e
x = 'Replace the letter e'

x.replace('e', 'f', 1)
Rfplace the letter e

Replace Letters Using a Dictionary

Example with a simple Password encryption.

# Replace letters
encrypt = {

x = 'password'

for k,v in encrypt.items():
    x = x.replace(k, v)


Decrypt Password

for k,v in encrypt.items():
    x = x.replace(v, k)


Splitting and Joining Strings in Python

How to Split a String in Python

The split() method allows you to split a string, using the character where you want to split the string as an argument.

# Split
x = 'hello, world'
splitx = x.split(',')
['hello', ' world']

How to Join a String in Python

The join() method can be used to join a list of items into a single string. The argument of the join() method is an array.

# Join
'hello, world'

Concatenate Strings in Python

Concatenating strings is the act of joining strings together. We have seen the join() method

How to Combine String Variables in Python

To combine string variables in Python, use string concatenation.

# Combine string variables
x = 'Jean-Christophe'
y = 'Chouinard'

x + y

How to Add a Space in String Concatenation

# Add space in Concatenate
x + ' ' + y
'Jean-Christophe Chouinard'

What is String Interpolation?

String interpolation is used to construct strings by embedding expressions or variables within string literals. Simply put, it is used embed values or expressions directly into a string, making the code more readable and concise. There are 3 main ways to perform string interpolation in Python:

  • F-strings: Formatted string literal
  • str.format() method: Alternative string formatting operation
  • % string: Not recommended

F-Strings in Python

F-Strings, or formatted string literals, are a string type that uses string interpolation to embed operations or variables inside Python strings.

They are strings prefixed with 'f' that allow you to convert Python objects into a printable string using expressions inside curly braces {}.

How to Add variable to a Python String

# Add variable to string
name = 'JC'
age = 12

s = f'Hello, I am {name} and I am {age}!'

Hello, I am JC and I am 12!

Counting Inside an F-String

# Count
name = 'JC'
age = 12

s = f'Hello, I am {name} and I am {age * 3}!'

Hello, I am JC and I am 36!

Applying Methods to an F-String

# Apply methods
name = 'JC'
age = 12

s = f'Hello, I am {name.lower()} and I am {age}!'

Hello, I am jc and I am 12!

How to Use str.format() in Python

The str.format() method can be used in Python format strings by converting objects into a string. According to’s Format String syntax documentation, the format() method uses format specifications within replacement fields (expression inside the curly braces {}) to define the objects and the literal text (outside curly braces).

print("My name is {0}, {1}".format("JC","Chouinard"))
My name is JC, Chouinard

How to Use String % Formatting

To use the %-formatting operation in Python, add the printf-type format string on the left (e.g. %d int, %s string, %f floating point) of a percentage sign (%) and match values to the right within a Tuple.

The official Python foundation documentation recommends using f-strings over % string formatting for improved readability and error handling.

That being said, here is how to use String %-formatting in Python.

name = 'JC'
"Hello, %s" % name
'Hello, JC'
name = 'JC'
last_name = 'Chouinard'
age = 32
born_in = 1990
"Hello, %s %s. You are %s years old, born in %s " % (name, last_name, age,born_in)

How to Perform String Comparison in Python

String comparison in Python is performed using operators

str1 = "car"
str2 = "plane"

# Using comparison operators
if str1 == str2:
    print("Both strings are equal.")
elif str1 < str2:
    print(f"{str1} comes before {str2}.")
    print(f"{str2} comes before {str1}.")
car comes before plane.

Boolean Test on Strings

We can perform boolean test to check the truth value on a string. For example, we can verify whether a string is empty using the == operator.

my_string = ""
(my_string == "")

How to Encode and Decode Python Strings

To encode and decode Python strings, use the encode() and decode() methods on the string object, and pass the relevant encoding as an argument. By default, strings in Python are encoded using your system default encoding, which generally is 'utf-8'.

Unicode Strings vs bytes

Unicode is the standard of regular Python strings. However, Python also supports bytes strings where each character represents a byte of data, and the values can range from 0 to 255.

Encoding a string serves the purpose of converting a string to bytes that can be decoded later.

# Original string
original_string = "Hello, ????!"  # Includes a non-ASCII character

# Encoding the string to UTF-8
encoded_bytes = original_string.encode("utf-8")

# Display the encoded bytes
print("Encoded Bytes:", encoded_bytes)

# Decoding the bytes back to a string
decoded_string = encoded_bytes.decode("utf-8")

# Display the decoded string
print("Decoded String:", decoded_string)
Encoded Bytes: b'Hello, \xf0\x9f\x8c\x8d!'
Decoded String: Hello, ????!

Python Strings Methods

Here are the most useful Python string methods.

capitalize()Converts the first character to upper case
count()Count occurrences of a value in string
encode()Returns encoded version of a string
startswith()Returns True if string starts with a value
endswith()Returns True if string ends with a value
find()Returns position of a value if found in string
isalnum()Returns True if all characters in the string are alphanumeric
isalpha()Returns True if all characters in the string are in the alphabet
isnumeric()Returns True if all characters in the string are numeric
islower()Returns True if all characters in the string are lower case
join()Converts the elements of an iterable into a string
lower()Converts a string into lower case
replace('start','end')Returns a string where a specified value is replaced with a specified value
split()Splits the string at the specified separator, and returns a list
strip()Returns a trimmed version of the string
title()Converts the first character of each word to upper case
upper()Converts a string into upper case
isspace()Returns True if all characters in the string are whitespaces.

Difference Between Python String and the Python String module

The term “Python String” can cause confusion between the built-in data type str in Python and the Python string module in Python’s standard library. A “Python string” represents a sequence of characters and the “Python String module” represents the string module that provides additional constants and classes related to string manipulations.

Parsing Strings with Regular Expressions

Regular Expressions (RegEx) can be used to parse Python strings and find patterns in text.

import re

sentence = "We have products ranging from $199.99 to $299.99."

# Regular expression to match prices in dollars and cents
price_pattern = r'\$\d+\.\d{2}'

# Using regular expression to find all prices in the sentence
prices = re.findall(price_pattern, sentence)

# Display the extracted prices
print("Extracted Prices:", prices)
Extracted Prices: ['$199.99', '$299.99']

This was a very simple introduction to Python strings, I strongly suggest that you dive deeper into F-Strings.

Enjoyed This Post?