If you are confused and don’t know how to fix the error “NameError: name ‘unicode’ is not defined” in Python. Let’s read this article, it’s helpful for you.
When does the “NameError: name ‘unicode’ is not defined” in Python occur?
The error will occur when we use Python version 3.0 or higher and try to use ‘unicode’ in our code. So this error will appear when you run the program. See the code below to know the cause.
value = unicode('Learn more Python programming at learnshareit.com!!!') print(value)
Output:
NameError: name 'unicode' is not defined
To fix errors like the above code, we will guide you through three ways to handle them when you encounter them.
How to fix this error?
Using ‘str‘ to replace ‘unicode‘
The ‘unicode’ is no longer used in Python3. Instead, in the current version, we use ‘str’ to replace ‘unicode’.
This approach is probably the simplest way. We need to replace ‘unicode’ with ‘str’, and our program will run as normal. Like this:
# Replace 'unicode' with 'str' value = str('Learn more Python programming at learnshareit.com!!!') print(value)
Output:
Learn more Python programming at learnshareit.com!!!
Using ‘sys‘ library to check the version
To use this way, we will first import ‘sys’ with a line of code like the below:
import sys
Then we will check the information about the version of Python we are using with:
sys.version_info[0]
If the result is greater than or equal to 3 then we type: unicode = str
and the system will automatically replace the ‘unicode’ with ‘str’. We do not need to manually change the ‘unicode’ to ‘str’ like the way introduced above.
import sys if sys.version_info[0] >= 3: unicode = str value = unicode('Learn more Python programming at learnshareit.com!!!') print(value)
Output:
Learn more Python programming at learnshareit.com!!!
Using u”.__class__’ to replace ‘unicode’
u''.__class__
is also a replacement for ‘unicode’ in Python3. To prove it, let’s make an example to understand more.
Here we use the python_version()
function to get the current version of Python and the type()
function to print the data type of u''.__class__
in Python2 and Python3.
In Python2
from platform import python_version value = u''.__class__('Learn more Python programming at learnshareit.com!!!') print("This is Python " + python_version()) print(type(value))
Output:
This is Python 2.7.18
<class 'str'>
In Python3
from platform import python_version value = u''.__class__('Learn more Python programming at learnshareit.com!!!') print(f"This is Python {python_version()}") print(type(value))
Output:
This is Python 3.8.12
<class 'str'>
So we need to replace ‘unicode’ with u''.__class__
then we will never get the error NameError: name ‘unicode’ is not defined in Python again. Like this:
value = u''.__class__('Learn more Python programming at learnshareit.com!!!') print(value)
Output:
Learn more Python programming at learnshareit.com!!!
Summary
“NameError: name ‘unicode’ is not defined” in Python is common error when we are familiar with Python2 and start to move to Python3. We can solve this error with just a few simple lines of code. We hope the article will be helpful to you. Have a beautiful day!
Maybe you are interested:
- Not all arguments converted during string formatting in python
- NameError: name ‘xrange’ is not defined in Python
- NameError: name ‘sleep’ is not defined in Python

Hi, I’m Cora Lopez. I have a passion for teaching programming languages such as Python, Java, Php, Javascript … I’m creating the free python course online. I hope this helps you in your learning journey.
Name of the university: HCMUE
Major: IT
Programming Languages: HTML/CSS/Javascript, PHP/sql/laravel, Python, Java