wake-up-neo.com

"Unicode-Fehler" Unicodeescape-Codec kann keine Bytes decodieren ... Textdateien können in Python 3 nicht geöffnet werden

Ich verwende Python 3.1 auf Windows 7-Computern. Russisch ist die Standardsystemsprache und Utf-8 ist die Standardcodierung.

Bei der Antwort auf eine vorherige Frage habe ich versucht, das "Codecs" -Modul zu verwenden, um mir etwas Glück zu geben. Hier einige 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, ich dachte, es könnte die Tatsache gewesen sein, dass Windows ein paar Ordner, z. B. den Ordner "Benutzer", in Russisch "übersetzt" (obwohl "Benutzer" immer noch der richtige Pfad ist), also habe ich es versucht den Python31-Ordner. Trotzdem kein Glück. Irgendwelche Ideen?

162
Eric

Das Problem liegt bei der Zeichenfolge

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

Hier beginnt \U eine achtstellige Unicode-Escape-Anweisung, beispielsweise "\ U00014321". In Ihrem Code folgt auf das Escapezeichen das Zeichen 's', das ungültig ist.

Sie müssen entweder alle Backslashes duplizieren oder der Zeichenfolge r voranstellen (um eine Rohzeichenfolge zu erzeugen).

355

Ein typischer Fehler unter Windows, da das Standardbenutzerverzeichnis C:\user\<your_user> ist. Wenn Sie diesen Pfad als Zeichenfolgeparameter für eine Python-Funktion verwenden möchten, wird ein Unicode-Fehler angezeigt, nur weil \u ein Unicode-Escape-Code ist. Jedes Zeichen, das danach nicht numerisch ist, führt zu einem Fehler.

Um es zu lösen, verdoppeln Sie einfach die Backslashes: C:\\\user\\\<\your_user>...

19
Julio Cesar

Das Voranstellen mit 'r' funktioniert sehr gut, muss jedoch in der richtigen Syntax sein. Zum Beispiel:

passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''')

Keine Notwendigkeit für \\ [doppelte Backslashes] hier - erhält die Lesbarkeit und funktioniert gut.

gut!

14
Fiddy Bux

Mit Python 3 hatte ich dieses Problem:

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

hat diesen Fehler erzeugt:

 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 das '\ U' einen Fehler ausgegeben hat und das 'r' vor dem String den achtstelligen Unicode-Escape (für einen Raw-String) deaktiviert, der fehlgeschlagen ist. (Dies ist ein bisschen zu stark vereinfacht, aber es funktioniert, wenn Sie sich nicht für Unicode interessieren.)

Hoffe das hilft jemandem

4
Matthew Cox

Im openpyxl-Dokument können Sie die folgenden Änderungen vornehmen.

from openpyxl import Workbook
from openpyxl.drawing.image import Image

wb = Workbook()
ws = wb.active
ws['A1'] = 'Insert a xxx.PNG'
# Reload an image
img = Image(**r**'x:\xxx\xxx\xxx.png')
# Insert to worksheet and anchor next to cells
ws.add_image(img, 'A2')
wb.save(**r**'x:\xxx\xxx.xlsx')
3
Deepika Anand

Ich hatte den gleichen Fehler in Python 3.2.

Ich habe ein Skript zum Versenden von E-Mails und:

csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8'))

wenn ich das erste Zeichen in der Datei uslugi1.csv entferne, funktioniert das einwandfrei.

2
user2859901

Oder Sie können "\" durch "/" im Pfad ersetzen.

1

Ich hatte den gleichen Fehler, nur das numpy-Paket deinstalliert und erneut installiert, das hat funktioniert!

 pfad = pd.read_csv (** 'C:\Benutzer\mravi\Desktop\Dateiname' **) 

Der Fehler ist auf den genannten Pfad zurückzuführen 

Fügen Sie "r" vor dem Pfad ein

 pfad = pd.read_csv (** r'C:\Users\mravi\Desktop\Dateiname '**) 

Das würde gut funktionieren.

0

Ich hatte diesen Fehler ... Ich besitze ein Python-Hauptskript, das Funktionen aus einem anderen, 2. Python-Skript aufruft. Am Ende des ersten Skripts hatte ich einen mit ''' '''..__ benannten Kommentarblock Ich erhielt diesen Fehler wegen dieses kommentierenden Codeblocks. Ich wiederholte den Fehler mehrmals, nachdem ich ihn gefunden hatte, um sicherzustellen, dass dies der Fehler war. Er war .. Ich bin immer noch unsicher, warum.

0
PCSailor