What is the difference between a string and a byte string in Python?


In Python, a string is a sequence of Unicode characters, while a byte string is a sequence of raw bytes.

Here are three examples that demonstrate the difference between a string and a byte string:

Creating a String

Example

In this example, we define a string "Lorem Ipsum" using double quotes. This string is made up of Unicode characters that can be encoded in different ways.

# Define a string
my_string = "Lorem Ipsum"
# Print the string
print(my_string)

Output

Lorem Ipsum

Creating a Byte String

Example

In this example, we define a byte string "Lorem Ipsum" using the b prefix. This byte string is made up of raw bytes, which are represented using the ASCII encoding. Note that the b prefix indicates that this is a byte string, not a regular string.

# Define a byte string
my_byte_string = b"Lorem Ipsum"


# Print the byte string
print(my_byte_string)

Output

 b'Lorem Ipsum'

Encoding a String as a Byte String

Example

In this example, we define a string "Lorem Ipsum" and then use the encode() method to convert it to a byte string. This method returns a new byte string that is encoded using the UTF−8 encoding by default. Note that the resulting byte string is prefixed with the b character to indicate that it is a byte string.

# Define a string
my_string = "Lorem Ipsum"

# Encode the string as a byte string
my_byte_string = my_string.encode()

# Print the byte string
print(my_byte_string)

Output

b'Lorem Ipsum'

Decoding a Byte String into a String

Example

In this example, we define a byte string "Lorem Ipsum" and then use the decode() method to convert it to a string. This method returns a new string that is decoded using the UTF−8 encoding by default. Note that the resulting string does not have the b prefix, indicating that it is a regular string.

# Define a byte string
my_byte_string = b"Lorem Ipsum"
# Decode the byte string into a string
my_string = my_byte_string.decode()
# Print the string
print(my_string)

Output

Lorem Ipsum

Concatenating a String and a Byte String

Example

In this example, we define a regular string "Hello" and a byte string " World". We then use the decode() method to convert the byte string to a regular string and concatenate the two using the + operator. Finally, we print the combined string.

# Define a string
my_string = "Lorem"

# Define a byte string

my_byte_string = b" Ipsum"

# Concatenate the string and byte string
my_combined_string = my_string + my_byte_string.decode()

# Print the combined string
print(my_combined_string)

Output

Lorem Ipsum

Writing a Byte String to a File

Example

In this example, we define a byte string "Lorem Ipsum". We then use the open() function to open a file called "my_file.txt" in binary mode ("wb"). We pass the byte string to the write() method of the file object to write the byte string to the file. The with statement ensures that the file is properly closed after the block of code is executed. Note that writing byte strings to files is useful when working with binary data, such as images or audio files.

# Define a byte string
my_byte_string = b"Lorem Ipsum"
# Write the byte string to a file

with open("my_file.txt", "wb") as f:
    f.write(my_byte_string)

In summary, the main difference between a string and a byte string in Python is that a string is made up of Unicode characters, while a byte string is made up of raw bytes. It's important to understand the difference between the two types because they have different use cases and can behave differently in certain situations.

Updated on: 11-Aug-2023

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements