447 Stimmen

"Unicode-Fehler "unicodeescape" Codec kann Bytes nicht dekodieren... Textdateien können in Python 3 nicht geöffnet werden

Ich verwende Python 3.1 auf einem Windows 7 Rechner. Russisch ist die Standard-Systemsprache, und utf-8 ist die Standardkodierung.

Betrachtet man die Antwort auf eine vorherige Frage Ich habe versucht, mit dem Modul "Codecs" ein wenig Glück zu haben. Hier sind ein paar Beispiele:

>>> g = codecs.open("C:\Users\Eric\Desktop\beeline.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#39>, line 1)

>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#40>, line 1)

>>> g = codecs.open("C:\Python31\Notes.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed \N character escape (<pyshell#41>, line 1)

>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#44>, line 1)

Meine letzte Idee war, dass es daran liegen könnte, dass Windows einige Ordner, wie z. B. den Ordner "users", ins Russische "übersetzt" (obwohl die Eingabe von "users" immer noch der richtige Pfad ist), also habe ich es im Ordner Python31 versucht. Trotzdem kein Glück. Hat jemand eine Idee?

1021voto

Martin v. Löwis Punkte 120025

Das Problem liegt in der Zeichenfolge

"C:\Users\Eric\Desktop\beeline.txt"

Hier, \U en "C:\Users ... beginnt eine achtstellige Unicode-Escape-Zeichenfolge, z. B. \U00014321 . In Ihrem Code folgt auf das Escape-Zeichen das Zeichen "s", das ungültig ist.

Sie müssen entweder alle Backslashes duplizieren:

"C:\\Users\\Eric\\Desktop\\beeline.txt"

Oder stellen Sie der Zeichenkette das Wort r (um eine rohe Zeichenkette zu erzeugen):

r"C:\Users\Eric\Desktop\beeline.txt"

52voto

Julio Cesar Punkte 425

Typischer Fehler unter Windows, da das Standard-Benutzerverzeichnis C:\user\<your_user> Wenn Sie also diesen Pfad als String-Argument an eine Python-Funktion übergeben wollen, erhalten Sie einen Unicode-Fehler, nur weil die \u ist ein Unicode-Escape. Wenn die nächsten 8 Zeichen nach dem \u nicht numerisch sind, führt dies zu einem Fehler.

Um das Problem zu lösen, verdoppeln Sie einfach die Backslashes: C:\\user\\<\your_user>... Dadurch wird sichergestellt, dass Python die einzelnen Backslashes als einzelne Backslashes behandelt.

13voto

Mattman85208 Punkte 1454

Mit Python 3 hatte ich dieses Problem:

 self.path = 'T:\PythonScripts\Projects\Utilities'

erzeugte diesen Fehler:

 self.path = 'T:\PythonScripts\Projects\Utilities'
            ^
 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in
 position 25-26: truncated \UXXXXXXXX escape

die Lösung, die funktioniert hat, ist:

 self.path = r'T:\PythonScripts\Projects\Utilities'

Es scheint, dass die \U ' führte zu einem Fehler, und das der Zeichenkette vorangestellte 'r' schaltet die achtstellige Unicode-Escape-Funktion (für eine Rohzeichenkette) aus, die nicht funktionierte. (Dies ist eine etwas zu starke Vereinfachung, aber es funktioniert, wenn Sie sich nicht um Unicode kümmern)

Hoffentlich hilft das jemandem

8voto

path = pd.read\_csv(\*\*'C:\\Users\\mravi\\Desktop\\filename'\*\*)

Der Fehler liegt an dem angegebenen Pfad

hinzufügen 'r' vor dem Pfad

path = pd.read\_csv(\*\*r'C:\\Users\\mravi\\Desktop\\filename'\*\*)

Das würde gut funktionieren.

7voto

Oder Sie könnten '\' durch '/' im Pfad ersetzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X