- Python Convert Bytes to String
- 1. Quick Examples of Converting Bytes to String
- 2. What are Bytes in Python?
- 3. Convert Bytes to String using decode()
- 4. str() – Bytes to String in Python
- 5. Convert Bytes Array to String
- 6. decode() vs str() for Byte Conversion
- Python Bytes to String – How to Convert a Bytestring
- What is a bytestring?
- How to Convert Bytes to a String in Python
- Using the decode() method
- Using the str() constructor
- Using the bytes() constructor
- Using the codecs module
- Conclusion
Python Convert Bytes to String
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, the following output:
# Output: b'sparkbyexamples \xf0\x9f\x92\x93' sparkbyexamples 💓 (love emoji)
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:
Python Bytes to String – How to Convert a Bytestring
Shittu Olumide
In this article, you will learn how to convert a bytestring. I know the word bytestring might sound technical and difficult to understand. But trust me – we will break the process down and understand everything about bytestrings before writing the Python code that converts bytes to a string.
So let’s start by defining a bytestring.
What is a bytestring?
A bytestring is a sequence of bytes, which is a fundamental data type in computing. They are typically represented using a sequence of characters, with each character representing one byte of data.
Bytes are often used to represent information that is not character-based, such as images, audio, video, or other types of binary data.
In Python, a bytestring is represented as a sequence of bytes, which can be encoded using various character encodings such as UTF-8, ASCII, or Latin-1. It can be created using the bytes() or bytearray() functions, and can be converted to and from strings using the encode() and decode() methods.
Note that in Python 3.x, bytestrings and strings are distinct data types, and cannot be used interchangeably without encoding or decoding.
This is because Python 3.x uses Unicode encoding for strings by default, whereas previous versions of Python used ASCII encoding. So when working with bytestrings in Python 3.x, it’s important to be aware of the encoding used and to properly encode and decode data as needed.
How to Convert Bytes to a String in Python
Now that we have the basic understanding of what bytestring is, let’s take a look at how we can convert bytes to a string using Python methods, constructors, and modules.
Using the decode() method
decode() is a method that you can use to convert bytes into a string. It is commonly used when working with text data that is encoded in a specific character encoding, such as UTF-8 or ASCII. It simply works by taking an encoded byte string as input and returning a decoded string.
decoded_string = byte_string.decode(encoding)
Where byte_string is the input byte string that we want to decode and encoding is the character encoding used by the byte string.
Here is some example code that demonstrates how to use the decode() method to convert a byte string to a string:
# Define a byte string byte_string = b"hello world" # Convert the byte string to a string using the decode() method decoded_string = byte_string.decode("utf-8") # Print the decoded string print(decoded_string)
In this example, we define a byte string b»hello world» and convert it to a string using the decode() method with the UTF-8 character encoding. The resulting decoded string is «hello world» , which is then printed to the console.
Note that the decode() method can also take additional parameters, such as errors and final , to control how decoding errors are handled and whether the decoder should expect more input.
Using the str() constructor
You can use the str() constructor in Python to convert a byte string (bytes object) to a string object. This is useful when we are working with data that has been encoded in a byte string format, such as when reading data from a file or receiving data over a network socket.
The str() constructor takes a single argument, which is the byte string that we want to convert to a string. If the byte string is not valid ASCII or UTF-8, we will need to specify the encoding format using the encoding parameter.
# Define a byte string byte_string = b"Hello, world!" # Convert the byte string to a string using the str() constructor string = str(byte_string, encoding='utf-8') # Print the string print(string)
In this example, we define a byte string b»Hello, world!» and use the str() constructor to convert it to a string object. We specify the encoding format as utf-8 using the encoding parameter. Finally, we print the resulting string to the console.
Using the bytes() constructor
We can also use the bytes() constructor, a built-in Python function used to create a new bytes object. It takes an iterable of integers as input and returns a new bytes object that contains the corresponding bytes. This is useful when we are working with binary data, or when converting between different types of data that use bytes as their underlying representation.
# Define a string string = "Hello, world!" # Convert the string to a bytes object bytes_object = bytes(string, 'utf-8') # Print the bytes object print(bytes_object) # Convert the bytes object back to a string decoded_string = bytes_object.decode('utf-8') # Print the decoded string print(decoded_string)
In this example, we start by defining a string variable string . We then use the bytes() constructor to convert the string to a bytes object, passing in the string and the encoding ( utf-8 ) as arguments. We print the resulting bytes object to the console.
Next, we use the decode() method to convert the bytes object back to a string, passing in the same encoding ( utf-8 ) as before. We print the decoded string to the console as well.
Using the codecs module
The codecs module in Python provides a way to convert data between different encodings, such as between byte strings and Unicode strings. It contains a number of classes and functions that you can use to perform various encoding and decoding operations.
For us to be able to convert Python bytes to a string, we can use the decode() method provided by the codecs module. This method takes two arguments: the first is the byte string that we want to decode, and the second is the encoding that we want to use.
import codecs # byte string to be converted b_string = b'\xc3\xa9\xc3\xa0\xc3\xb4' # decoding the byte string to unicode string u_string = codecs.decode(b_string, 'utf-8') print(u_string)
In this example, we have a byte string b_string which contains some non-ASCII characters. We use the codecs.decode() method to convert this byte string to a Unicode string.
The first argument to this method is the byte string to be decoded, and the second argument is the encoding used in the byte string (in this case, it is utf-8 ). The resulting Unicode string is stored in u_string .
To convert a Unicode string to a byte string using the codecs module, we use the encode() method. Here is an example:
import codecs # unicode string to be converted u_string = 'This is a test.' # encoding the unicode string to byte string b_string = codecs.encode(u_string, 'utf-8') print(b_string)
In this example, we have a Unicode string u_string . We use the codecs.encode() method to convert this Unicode string to a byte string. The first argument to this method is the Unicode string to be encoded, and the second argument is the encoding to use for the byte string (in this case, it is utf-8 ). The resulting byte string is stored in b_string .
Conclusion
Understanding bytestrings and string conversion is important because it is a fundamental aspect of working with text data in any programming language.
In Python, this is particularly relevant due to the increasing popularity of data science and natural language processing applications, which often involve working with large amounts of text data.
For further learning, check out these helpful resources:
Let’s connect on Twitter and on LinkedIn. You can also subscribe to my YouTube channel.