You can convert bytes to strings very easily in Python by using the decode()
or str()
function. Bytes and strings are two data types and they play a crucial role in many applications. However, in some cases, we may need to convert a byte string to a regular string. In this article, we will learn different methods to convert bytes to a string in Python.
The quick answer to convert bytes to a string in Python is to use the decode()
or str()
function. But there is details to that which we will cover in this article. So let’s get started.
1. Quick Examples of Converting Bytes to String
Below are the most common methods for converting bytes to a string. In the following sections, we will discuss each of these methods in detail with examples.
# Quick examples of converting bytes to string
# Create byte
b = b'sparkByExamples'
# Using the decode() method
s = b.decode('utf-8')
# Using the str() constructor
s = str(b)
# Using the bytes.decode() method
s = bytes.decode(b, 'utf-8')
# Using the bytearray.decode() method
s = b.decode('utf-8')
# Using the codecs.decode() method
import codecs
string = codecs.decode(b, 'utf-8')
2. What are Bytes in Python?
In Python, bytes
is a built-in data type that represents a sequence of bytes. A sequence of bytes can represent any kind of data, including text, images, video, and other types of binary data.
Bytes can represent non-ASCII characters, such as emoji. Because emoji and other non-ASCII characters are represented using multiple bytes, they can be difficult to work with when using regular strings.
# Byte string with an emoji character a
byte_string = b'sparkbyexamples \xF0\x9F\x92\x93'
# Print the byte string
print(byte_string)
# Decode the byte string to a regular string
string = byte_string.decode('utf-8')
# Print the regular string
print(string)
Yields below output.
3. Convert Bytes to String using decode()
To convert bytes to strings in Python, use the decode()
function. decode()
is built-in Python method used to convert bytes to strings. To use the decode()
method, you need to specify the character encoding that was used to encode the byte string.
This method is designed specifically to decode byte strings into regular strings and takes into account the character encoding used to encode the byte string.
# Create a byte string using utf-8 encoding
byte_string = b'sparkbyexamples'
# Use utf-8 to decode() the string
string = byte_string.decode('utf-8')
# Print the regular string
print(string)
# Output:
# sparkbyexamples
Below is another example that uses UTF-16 encoding:
# Create a byte string using utf-16 encoding
byte_string = b'\xff\xfes\x00p\x00a\x00r\x00k\x00b\x00y\x00e\x00x\x00a\x00m\x00p\x00l\x00e\x00s\x00'
# Decode the byte string to a regular string
string = byte_string.decode('utf-16')
# Print the regular string
print(string)
# Output:
# sparkbyexaples
Steps to convert bytes to a string using the decode()
function in Python:
- Find the bytes that you want to convert
- Call the
decode()
method on the byte string and pass the appropriate encoding as an argument. - Assign the decoded string to a variable.
- Use the decoded string in your Python code as needed.
You can convert that string back to bytes with UTF-16 encoding using the encode()
method:
# Define a string
string = 'sparksbyexamples'
# Encode the string to bytes in UTF-16
byte_string = string.encode('utf-16')
# Print the byte string
print(byte_string)
4. str() – Bytes to String in Python
str()
is a built-in Python function that can be used to convert a bytes object to a string object, by passing the bytes object as the first argument and the desired encoding as the second argument.
Syntax of str()
for bytes to string conversion:
# Syntax of str()
str(byte_string, 'utf-8')
Converting bytes with UTF-8 encoding using the str()
function:
# Create a byte string with a non-ASCII character
byte_string = b'sparkbyexamples is \xf0\x9f\x92\x93'
# Convert byte string to string using UTF-8 encoding
string_utf8 = str(byte_string, 'utf-8')
print(string_utf8)
# Output:
# sparkbyexamples is 💓 (love emoji)
Byte with a smile emoji using UTF-16 encoding to a string:
# smile emoji - UTF-16 encoding
byte_string = b'\xff\xfe(\x00?\x00?\x00)\x00'
# Convert byte string to string
string_utf16 = byte_string.decode('utf-16')
print(string_utf16)
# Output:
# 😊 (smile emoji)
5. Convert Bytes Array to String
To convert a byte array to a string, you can use the bytes()
constructor to create a bytes object from the array, and then use the decode()
method to convert the bytes object to a string.
# Create a byte array
byte_array = bytearray([115, 112, 97, 114, 107])
# Convert byte array to string using the UTF-8 encoding
string_utf8 = bytes(byte_array).decode('utf-8')
# Print the string
print(string_utf8)
# Output:
# spark
6. decode() vs str() for Byte Conversion
The decode()
method is used to convert a bytes object to a string by decoding it with a specified character encoding. While the str()
constructor is a simpler method that can be used to create a string object directly from a bytes object.
Below is the table, showing the major differences between the decode()
and str()
for conversion of bytes to string:
Method | Character encoding | Flexibility |
---|---|---|
decode() | Can specify any character encoding | More flexible |
str() | Limited to standard encodings such as ASCII, UTF-8, UTF-16 | Less flexible |
Though, there are multiple methods for converting bytes to string in python, the most recommened way is to use the decode() method.
Following is the performance of the decode()
and str()
functions for converting a string 1 Million times. It turns out that the str()
is a little faster. However, this difference is negligible.
import timeit
# Sample byte data
byte_data = b'sparkbyexamples' * 1000
# Convert using decode() method
def decode_method():
return byte_data.decode('utf-8')
# Convert using str() constructor
def str_method():
return str(byte_data, 'utf-8')
# Time the execution of both methods
print('decode():', timeit.timeit(decode_method, number=1000000))
print('str():', timeit.timeit(str_method, number=1000000))
Yields the following output:
decode(): 2.4661002999637276
str(): 1.952021999983117
Frequently Asked Questions on Convert Bytes to String
To convert bytes to a string in Python, you can use the decode
method, specifying the encoding of the byte data. The most common encoding is ‘utf-8’.
The decode
method is used to convert a sequence of bytes into a string. It takes an encoding as an argument, specifying how the bytes should be interpreted. The most common encoding is ‘utf-8’.
It’s generally recommended to know the encoding. However, if you’re uncertain, you can try different encodings or use libraries like chardet
to automatically detect the encoding.
To handle decoding errors when converting bytes to a string in Python, you can use the errors
parameter with the decode
method. The errors
parameter allows you to specify how decoding errors should be handled.
There are many other encodings such as ‘latin-1’, ‘utf-16’, ‘ascii’, etc. The choice of encoding depends on the data you are working with. Always use the encoding that matches the original encoding of the data.
you can encode a string back to bytes in Python using the encode
method. This is the reverse process of decoding bytes to a string. For example, string_data
is a string, and encode('utf-8')
converts it to bytes using UTF-8 encoding. You can choose a different encoding based on your requirements.
Summary and Conclusion
In this article, we have covered different methods to convert bytes to strings in Python. We have discussed the use of the decode()
and str()
methods, and provided examples of how to use them. We also compared the two methods and highlighted their differences. If you have any questions, feel free to ask in the comments below.
Happy coding!
Related Articles
- Remove Substring From Python String
- Python String Contains
- Python String Copy
- Python String Concatenation
- Convert String to Tuple Python
- Python String Sort Alphabetically
- Python Remove Spaces From String
- Python String reverse with Examples
- Remove Punctuation From String Python
- How to Remove Commas from a String Python