Je suis nouveau et j'étudie l'apprentissage automatique. Je tombe sur un tutoriel que j'ai trouvé en ligne et j'aimerais faire fonctionner le programme afin que je comprenne mieux. Cependant, je rencontre des problèmes de chargement du fichier CSV dans le bloc-notes Jupyter.
Je reçois cette erreur:
File "<ipython-input-2-70e07fb5b537>", line 2
student_data = pd.read_csv("C:\Users\xxxx\Desktop\student-intervention-
system\student-data.csv")
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in
position 2-3: truncated \UXXXXXXXX escape
J'ai suivi des tutoriels en ligne concernant cette erreur mais aucun n'a fonctionné. Quelqu'un sait-il comment y remédier?
J'ai aussi essayé "\" et utf-8 mais aucun n'a fonctionné.
J'utilise la dernière version d'Anaconda Windows 7 Python 3.7
Utilisez une notation de chaîne brute pour votre chemin Windows. In python '\' ont une signification en python. Essayez plutôt de faire une chaîne comme celle-ci r "path":
student_data = pd.read_csv(r"C:\Users\xxxx\Desktop\student-intervention- system\student-data.csv")
Si cela ne fonctionne pas, essayez de cette façon:
import os
path = os.path.join('c:' + os.sep, 'Users', 'xxxx', 'Desktop', 'student-intervention-system', 'student-data.csv')
student_data = pd.read_csv(path)
Remplacez toutes les barres obliques inverses
\
avec des barres obliques/
ou placez unr
avant votre chaîne de chemin de fichier pour éviter cette erreur. Il ne s'agit pas que le nom de votre dossier soit trop long.
Comme Bohun Mielecki l'a mentionné, le \
le caractère qui est généralement utilisé pour désigner la structure d'un fichier dans Windows a une fonction différente lorsqu'il est écrit dans une chaîne.
Depuis la documentation Python3: La barre oblique inversée
\
Le caractère est utilisé pour échapper les caractères qui ont autrement une signification spéciale, comme la nouvelle ligne, la barre oblique inverse ou le caractère de citation.
Comment cela affecte particulièrement votre déclaration est que dans la ligne
student_data = pd.read_csv("C:\Users\xxxx\Desktop\student-intervention-
system\student-data.csv")
\Users
correspond à la séquence d'échappement \Uxxxxxxxx
où xxxxxxxx
fait référence à un Character with 32-bit hex value xxxxxxxx
. Pour cette raison, Python essaie de trouver une valeur hexadécimale 32 bits. Cependant, comme -sers
de Users
ne correspond pas au format xxxxxxxx
, vous obtenez l'erreur:
SyntaxError: (erreur unicode) le codec 'unicodeescape' ne peut pas décoder les octets en position 2-3: échappement\UXXXXXXXX tronqué
La raison pour laquelle votre code fonctionne maintenant est que vous avez placé un r
devant 'C:\Users\xxxx\Desktop\project\student-data.csv'
. Cela indique à python de ne pas traiter le caractère barre oblique inverse /
comme d'habitude et lit la chaîne entière telle quelle.
J'espère que cela vous aide à mieux comprendre votre problème. Si vous avez besoin de plus de précisions, faites-le moi savoir.
Source: Documentation Python
Essayez cette student_data = pd.read_csv("C:/Users/xxxx/Desktop/student-intervention- system/student-data.csv")
.
Remplacer les barres obliques inverses dans ce code, cela fonctionnera pour vous.
Essayer
pd.read_csv('file_name',encoding = "utf-8")