The following error message is shown as I try to import nltk
module
I actually have the 0xb3
(ł
) character in my username, but what bothers me is that other modules like re
, codecs
, etc. are imported successfully.
Is it possible to solve it on Python side (without changing my username system-wide)?
File "C:\Python27\lib\ntpath.py", line 310, in expanduser
return userhome + path[i:]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb3 in position 13: ordinal not in range(128)
As in the ntpath.py
file there is not an encoding for unicode username , you need to add the following command in expanduser(path)
function in ntpath.py
:
if isinstance(path, unicode):
userhome = unicode(userhome,'unicode-escape').encode('utf8')
so expanduser
function must be like the following :
def expanduser(path):
"""Expand ~ and ~user constructs.
If user or $HOME is unknown, do nothing."""
if isinstance(path, bytes):
tilde = b'~'
else:
tilde = '~'
if not path.startswith(tilde):
return path
i, n = 1, len(path)
while i < n and path[i] not in _get_bothseps(path):
i += 1
if 'HOME' in os.environ:
userhome = os.environ['HOME']
elif 'USERPROFILE' in os.environ:
userhome = os.environ['USERPROFILE']
elif not 'HOMEPATH' in os.environ:
return path
else:
try:
drive = os.environ['HOMEDRIVE']
except KeyError:
drive = ''
userhome = join(drive, os.environ['HOMEPATH'])
if isinstance(path, bytes):
userhome = userhome.encode(sys.getfilesystemencoding())
if isinstance(path, unicode):
userhome = unicode(userhome,'unicode-escape').encode('utf8')
if i != 1: #~user
userhome = join(dirname(userhome), path[1:i])
return userhome + path[i:]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With