2016-11-01 5 views
0

Python-Version: 2,7nltk UnicodeDecodeError - verbunden mit der ntpath.py Datei

Windows-Version: Windows 7 64-bit

Sprache des Systems: Russische

I habe ein Problem, das im Internet noch nicht gelöst ist.

Hier ist mein Code:

import textblob 

text = "I love people" 

text = TextBlob(text) 
print text.sentiment 

ich die folgende Fehlermeldung mit der nltk Methode get connected:

Traceback (most recent call last): 
    File "C:\Users\Александр\Desktop\TextBlob.py", line 1, in <module> 
    import textblob 
    File "C:\Python27\lib\site-packages\textblob\__init__.py", line 9, in <module> 
    from .blob import TextBlob, Word, Sentence, Blobber, WordList 
    File "C:\Python27\lib\site-packages\textblob\blob.py", line 28, in <module> 
    import nltk 
    File "C:\Python27\lib\site-packages\nltk\__init__.py", line 128, in <module> 
    from nltk.chunk import * 
    File "C:\Python27\lib\site-packages\nltk\chunk\__init__.py", line 155, in <module> 
    from nltk.data import load 
    File "C:\Python27\lib\site-packages\nltk\data.py", line 77, in <module> 
    if 'APPENGINE_RUNTIME' not in os.environ and os.path.expanduser('~/') != '~/': 
    File "C:\Python27\lib\ntpath.py", line 311, in expanduser 
    return userhome + path[i:] 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc0 in position 9: ordinal not in range(128) 

Soweit ich aus den Antworten von Google und Stackoverflow, verstand das Problem verwendet ist zu Sprachproblemen von ntpath.py.

habe ich versucht, die folgenden Probleme, und sie hat nicht funktioniert:

  1. sys.setdefaultencoding('utf8')How to fix: "UnicodeDecodeError: 'ascii' codec can't decode byte"

  2. sys.setdefaultencoding('Cp1252') Verwendung Verwenden Sie den Fehler beseitigt. Die Ausgabe meines Programms verschwand jedoch ebenfalls.

  3. Verwenden import io. Python (nltk) - UnicodeDecodeError: 'ascii' codec can't decode byte

  4. Mit unicode().decode() in ntpath.py (ich erinnere mich nicht, einen Link, wo ich diese Lösung gefunden).

UPD: Ich habe eine Lösung gefunden.

Ich habe versucht, diesen Teil in ntpath.py einzufügen:

import os 
import sys 
import stat 
import genericpath 
import warnings 

#another way 
reload(sys) 
sys.setdefaultencoding('Cp1252') 

Es funktioniert perfekt:

reload(sys) 
sys.setdefaultencoding('Cp1252') 

So, hier der Teil des Codes in dieser Datei ist. Wenn Sie eine andere Sprache in Ihren Systemeinstellungen haben, "spielen" Sie mit ihnen und ersetzen Sie Cp1252.

+0

Das hat nichts mit NLTK zu tun, denke ich.Das Problem besteht darin, dass Ihr Pfad Nicht-ASCII-Zeichen enthält, die nicht ordnungsgemäß behandelt werden. Wenn du neu in Python bist, warum arbeitest du nicht mit Python 3? Sie werden viel weniger Probleme dieser Art haben. – lenz

+0

@lenz, Ich habe versucht, in einer Version 3.5 zu arbeiten, aber ich hatte eine Menge Probleme mit dem Kompilieren in EXE-Dateien. 2.7 funktioniert ziemlich gut damit. Kann ich irgendwie die Parameter meines Systems ändern, um dieses Problem zu vermeiden? – Alex

+0

Ja, du kannst: Dein Benutzername ist "Александр", also 'userhome' ist wahrscheinlich' r "C: \ Users \ Александр" '. Erstellen Sie einen neuen Benutzer namens Alexander (oder Aleksandr oder Donald), so dass Ordnerpfade nur ASCII-Zeichen enthalten. – alexis

Antwort

1

Ich habe eine Lösung gefunden.

Ich habe versucht, diesen Teil in ntpath.py einzufügen:

import os 
import sys 
import stat 
import genericpath 
import warnings 

#another way 
reload(sys) 
sys.setdefaultencoding('Cp1252') 

Es funktioniert perfekt:

reload(sys) 
sys.setdefaultencoding('Cp1252') 

So, hier der Teil des Codes in dieser Datei ist. Wenn Sie eine andere Sprache in Ihren Systemeinstellungen haben, "spielen" Sie mit ihnen und ersetzen Sie Cp1252.