J'utilise python 3.1, sur une machine Windows 7. Le russe est la langue par défaut du système et utf-8 est le codage par défaut.
En regardant la réponse à une question précédente , j'ai essayé d’utiliser le module "codecs" pour me donner un peu de chance. Voici quelques exemples:
>>> 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)
Ma dernière idée était que je pensais que c’était peut-être le fait que Windows "traduisait" quelques dossiers, tels que le dossier "utilisateurs", en russe (bien que taper "utilisateurs" reste le bon chemin), j’ai donc le dossier Python31. Toujours pas de chance. Des idées?
Le problème est avec la chaîne
"C:\Users\Eric\Desktop\beeline.txt"
Ici, \U
démarre un échappement Unicode de huit caractères, tel que '\ U00014321`. Dans votre code, l'échappement est suivi du caractère 's', qui n'est pas valide.
Vous devez dupliquer toutes les barres obliques inverses ou préfixer la chaîne par r
(pour produire une chaîne brute).
Erreur typique sous Windows, car le répertoire utilisateur par défaut est C:\user\<your_user>
. Ainsi, lorsque vous souhaitez utiliser ce chemin en tant que paramètre de chaîne dans une fonction Python, vous obtenez une erreur Unicode, simplement parce que \u
est un échappement Unicode. Tout caractère non numérique après cela génère une erreur.
Pour le résoudre, il suffit de doubler les barres obliques inverses: C:\\\user\\\<\your_user>...
La préfixe avec 'r' fonctionne très bien, mais il faut que la syntaxe soit correcte. Par exemple:
passwordFile = open(r'''C:\Users\Bob\SecretPasswordFile.txt''')
bien!
Avec Python 3, j'ai eu ce problème:
self.path = 'T:\PythonScripts\Projects\Utilities'
produit cette erreur:
self.path = 'T:\PythonScripts\Projects\Utilities'
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in
position 25-26: truncated \UXXXXXXXX escape
le correctif qui a fonctionné est:
self.path = r'T:\PythonScripts\Projects\Utilities'
Il semble que le '\ U' produisait une erreur et que le 'r' précédant la chaîne désactive l'échappement Unicode de huit caractères (pour une chaîne brute) qui échouait. (C'est un peu une simplification excessive, mais cela fonctionne si vous ne vous souciez pas de l'unicode)
J'espère que cela aide quelqu'un
Reportez-vous au document openpyxl, vous pouvez effectuer les modifications suivantes.
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')
J'ai eu cette même erreur dans Python 3.2.
J'ai un script pour l'envoi d'email et:
csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8'))
quand je supprime le premier caractère du fichier uslugi1.csv
, cela fonctionne bien.
Ou vous pouvez remplacer "\" par "/" dans le chemin.
J'ai eu la même erreur, juste désinstallé et installé à nouveau le paquet numpy, cela a fonctionné!
path = pd.read_csv (** 'C:\Utilisateurs\mravi\Bureau\nom_fichier' **)
L'erreur est due au chemin mentionné
Ajouter 'r' avant le chemin
path = pd.read_csv (** r'C:\Utilisateurs\mravi\Bureau\nom de fichier '**)
Cela fonctionnerait bien.
J'ai eu cette erreur ... J'ai un script Python principal qui appelle les fonctions d'un autre script, 2nd, script Python ... .. À la fin du premier script, j'avais un bloc de commentaires désigné par ''' '''
. obtenir cette erreur à cause de ce bloc de code de commentaire . J'ai répété l'erreur plusieurs fois une fois que je l'ai trouvée pour m'assurer que c'était bien l'erreur, et c'était . Je ne sais toujours pas pourquoi.